XML處理是開發過程當中常常遇到的,PHP對其也有很豐富的支持,本文只是對其中某幾種解析技術作簡要說明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument。本節主要介紹simpleXMLnode
1.1建立SimpleXML對象數組
1.1. 建立SimpleXML對象緩存
$data = <<<」XML」dom
<?xml version=’1.0′ encoding=’utf-8’?>//這一行能夠不要,會自動建立spa
<departs>xml
<depart>對象
<name>name1</name>圖片
<employees>utf-8
<employee>開發
<serial_no attr=’xxxx’ sex=’nan’>100001</serial_no>
<name>Simon</name>
</employee>
<employee>
<serial_no>100002</serial_no>
<name>Elaine</name>
</employee>
</employees>
</depart>
<depart>
<name>name2</name>
<employees>
<employee>
<serial_no>110001</serial_no>
<name>yuxiaotao</name>
</employee>
</employees>
</depart>
</departs>
XML;
$xml = simplexml_load_string($data); //建立 SimpleXML對象
echo 「<pre>」;
print_r($xml); //輸出 XML
$xml->depart[0]->employees->employee[0]->name;
1.1.2. simplexml_load_file
$xml = simplexml_load_file(‘test.xml’);
只是把xml文件放在文件裏面;好比有的時候咱們會把xml文件緩存在memcache裏面
$dom = new DOMDocument;
$dom->loadXML(‘<books><book><title>blah</title></book></books>’);
if (!$dom) {
echo ’Error while parsing the document’;
exit;
}
$s = simplexml_import_dom($dom);
echo $s->book[0]->title;
Eg:輸出:100001
Echo $xml->depart[0]->employees->employee[0]->serial_no;
$xml->depart[0]->employees->employee[0]->serial_no=123
Eg:輸出xxxx
Echo $xml->depart[0]->employees->employee[0]->serial_no['attr'];
$xml->depart[0]->employees->employee[0]->serial_no['attr']=11111;
$xml->depart[0]->employees->employee[0]->serial_no->addAttribute(‘name’,'yuyi’);
unset($xml->depart[0]->employees->employee->serial_no['attr']);
$a=$xml->depart[0]->employees->employee[0]->serial_no->attributes();
echo 」<pre>」;print_r($a);
輸出結果:
注意:
$a=$xml->depart[0]->employees->employee[0]->name->attributes();
echo 」<pre>」;print_r($a);
輸出結果:
注意:只可以給沒有值的節點添加子節點
$xml->depart[0]->employees->employee[0]->addChild(‘names’,'yuyi’);
輸出結構:
unset($xml->depart[0]->employees->employee[0]->names);
$xml->count();
注意:這裏只是子節點,不包括孫子節點
$xml = simplexml_load_string($data); //建立 SimpleXML對象
foreach($xml->depart as $node){
echo $node->name.’<br>’;
}
輸出結果:
SimpleXML組件提供了一種基於 XML數據路徑的查詢方法。 XML數據路徑即從 XML的根到某一個標籤所通過的所有標籤。這種路徑使用斜線「 /」隔開標籤名。例如,對於上面的 XML數據,要查詢全部的標籤「name」中的值,從根開始要通過 departs、depart、employees和 employee標籤,則其路徑爲「/departs/depart/employees/employee/name」。 SimpleXML組件使用 xpath方法來解析路徑,其語法格式以下所示。xpath(string path)其中的 path爲路徑。該方法返回了一個包含有全部要查詢標籤值的數組。如下代碼查詢了上面 XML數據中的全部 name標籤。
Eg:
$result = $xml->xpath(‘/departs/depart/employees/employee/name’);
echo 」<pre>」;print_r($result); //輸出節點
輸出結果: