PHP操控XML (1)

XML處理是開發過程當中常常遇到的,PHP對其也有很豐富的支持,本文只是對其中某幾種解析技術作簡要說明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument。本節主要介紹simpleXMLnode

1.1建立SimpleXML對象數組

 

   1.1.1. simplexml_load_string

  1.1.2. simplexml_load_file

  1.1.3. simplexml_import_dom

  1.1.4. new SimpleXMLElement($data);

1.2. 元素操做

1.1.1. 輸出節點值

1.1.2. 修改節點值

1.1.3. 輸出屬性值

1.1.4. 修改節點屬性值

1.1.5. 添加屬性

1.1.6. 刪除屬性

1.1.7. 獲取某個節點是全部屬性

1.1.8. 添加子節點

1.1.9. 刪除節點

1.1.10. 獲取子節點的數量

1.1.11. 遍歷子節點對象

1.1.12. 基於 XML數據路徑的查詢 

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.1. simplexml_load_string

1.1.2. simplexml_load_file

$xml = simplexml_load_file(‘test.xml’);

只是把xml文件放在文件裏面;好比有的時候咱們會把xml文件緩存在memcache裏面

1.1.3. simplexml_import_dom

$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;

1.1.4. new SimpleXMLElement($data);

1.2. 元素操做

1.2.1. 輸出節點值

Eg:輸出:100001

Echo $xml->depart[0]->employees->employee[0]->serial_no;

1.2.2. 修改節點值

$xml->depart[0]->employees->employee[0]->serial_no=123

1.2.3. 輸出屬性值

Eg:輸出xxxx

Echo $xml->depart[0]->employees->employee[0]->serial_no['attr'];

1.2.4. 修改節點屬性值

$xml->depart[0]->employees->employee[0]->serial_no['attr']=11111;

1.2.5. 添加屬性

$xml->depart[0]->employees->employee[0]->serial_no->addAttribute(‘name’,'yuyi’);

1.2.6. 刪除屬性

unset($xml->depart[0]->employees->employee->serial_no['attr']);

1.2.7. 獲取某個節點是全部屬性

$a=$xml->depart[0]->employees->employee[0]->serial_no->attributes();

echo 」<pre>」;print_r($a);

輸出結果:

圖片4

注意:

$a=$xml->depart[0]->employees->employee[0]->name->attributes();

echo 」<pre>」;print_r($a);

輸出結果:

圖片5

1.2.8. 添加子節點

注意:只可以給沒有值的節點添加子節點

$xml->depart[0]->employees->employee[0]->addChild(‘names’,'yuyi’);

輸出結構:

圖片1

 

1.2.9. 刪除節點

unset($xml->depart[0]->employees->employee[0]->names);

 

1.2.10. 獲取子節點的數量

$xml->count();

 

注意:這裏只是子節點,不包括孫子節點

1.2.11. 遍歷子節點對象

$xml = simplexml_load_string($data); //建立 SimpleXML對象

foreach($xml->depart as $node){

echo $node->name.’<br>’;

}

輸出結果:

圖片2

 

1.2.12. 基於 XML數據路徑的查詢 

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); //輸出節點

輸出結果:

圖片3

相關文章
相關標籤/搜索