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參考。