最新的Web開發教程
 

PHP SimpleXML的解析器


SimpleXML的是一個PHP擴展,它可以讓我們輕鬆操作並獲取XML數據。


該SimpleXML的解析器

SimpleXML的是基於樹的解析器。

SimpleXML的提供得到一個元素的名稱的一個簡單的方法,如果你知道XML文檔的結構或佈局屬性和文本內容。

SimpleXML的轉向一個XML文檔轉換為數據結構,你可以像數組和對象的集合遍歷。

相比DOM或Expat解析器,SimpleXML的接收一個代碼行較少從一個元素讀取文本數據。


安裝

作為PHP 5中,SimpleXML函數是PHP核心的一部分。 沒有安裝是需要使用這些功能。


PHP的SimpleXML - 閱讀從字符串

的PHP simplexml_load_string()函數是用來從一個字符串中讀取XML數據。

假設我們有一個包含XML數據,像這樣的變量:

$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>";

下面的例子顯示了如何使用simplexml_load_string()函數從字符串中讀取XML數據:

<?php
$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>";

$xml=simplexml_load_string($myXMLData) or die("Error: Cannot create object");
print_r($xml);
?>
運行示例»

代碼的輸出將是:

SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )

錯誤處理提示:加載文檔時使用的libxml功能檢索所有XML錯誤,然後遍歷錯誤。 下面的示例嘗試加載一個破損的XML字符串:

<?php
libxml_use_internal_errors(true);
$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<document>
<user>John Doe</wronguser>
<email>[email protected]</wrongemail>
</document>";

$xml = simplexml_load_string($myXMLData);
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>" , $error->message;
    }
} else {
    print_r($xml);
}
?>
運行示例»

代碼的輸出將是:

Failed loading XML:
Opening and ending tag mismatch: user line 3 and wronguser
Opening and ending tag mismatch: email line 4 and wrongemail

PHP的SimpleXML - 從文件讀取

的PHP simplexml_load_file()函數是用來從文件讀取的XML數據。

假設我們有一個名為“一個XML文件note.xml ”,看起來像這樣:

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

下面的例子說明了如何使用該simplexml_load_file()函數來從文件中讀取XML數據:

<?php
$xml=simplexml_load_file("note.xml") or die("Error: Cannot create object");
print_r($xml);
?>
運行示例»

代碼的輸出將是:

SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )

提示:下一章說明如何獲取/從用SimpleXML的XML文件中獲取節點值!


更多PHP的SimpleXML

有關PHP的SimpleXML功能的更多信息,請訪問我們的PHP的SimpleXML參考。