php中DOMDocument與SimpleXML建立與解析xml程式

來源:互聯網
上載者:User

例子:

DOM XML 解析器函數是 PHP 核心的組成部分。無需安裝就可以使用這些函數。
XML 檔案
將在我們的例子中使用下面的 XML 檔案:

 代碼如下 複製代碼
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

載入和輸出 XML
我們需要初始化 XML 解析器,載入 XML,並把它輸出:

例子

 代碼如下 複製代碼

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

print $xmlDoc->saveXML();
?>

以上代碼的輸出:

George John Reminder Don't forget the meeting!假如您在瀏覽器視窗中查看原始碼,會看到下面這些 HTML:

 代碼如下 複製代碼
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>上

面的例子建立了一個 DOMDocument-Object,並把 "note.xml" 中的 XML 載入這個文檔對象中。

saveXML() 函數把內部 XML 文檔放入一個字串,這樣我們就可以輸出它。

例子

 代碼如下 複製代碼

<?php
//建立一個新文檔
$dom = new DOMDocument('1.0');
 
//建立根項目book,並將其添加到文檔中
$book = $dom->appendChild($dom->createElement('book'));
 
//建立一個title元素,並將其添加到$book中
$title = $book->appendChild($dom->createElement('title'));
$title->appendChild($dom->createTextNode('Php Book'));
//為title元素的添加屬性cover,屬性值soft
$title->setAttribute('cover','soft');
 
//建立author元素,並將其添加到$book中
$kaifabu = $book->appendChild($dom->createElement('author'));
//為author元素添加文本
$kaifabu->appendChild($dom->createTextNode('kaifabu'));
 
//建立author元素,並將其添加到$book中
$kaifabu = $book->appendChild($dom->createElement('author'));
//為author元素添加文本
$kaifabu->appendChild($dom->createTextNode('Younker'));
 
//將格式化的DOM文檔輸出為XML
$dom->formatOutput = true;
 
//產生books.xml檔案
$dom->save('books.xml');
//此步把產生的XML以字串形式顯示
echo htmlentities($dom->saveXML());
?>

輸出結果如下:

 代碼如下 複製代碼


<?xml version="1.0" ?>
<book>
  <title cover="soft">Php Book</title>
  <author>kaifabu</author>
  <author>Younker</author>
</book>


註:如果上面產生XML這步改成$dom->save(‘books.xml’);直接產生一個books.xml檔案

下面我們利用simplexml來解析xml檔案

SimpleXML 函數允許您把 XML 轉換為對象。

通過普通的屬性選取器或數組迭代器,可以處理這個對象,就像處理任何其他對象一樣。

其中的一些函數需要最新的 PHP 版本。
安裝
SimpleXML 函數是 PHP 核心的組成部分。無需安裝即可使用這些函數。

 代碼如下 複製代碼

<?php
//使用SimpleXML擴充解析XML文檔,解析出來是一個對象,可以通過對象擷取它的元素內容
$sx = simplexml_load_file('books.xml');
//擷取title標籤的內容
$title = $sx->title;
//因為有兩個author元素,通過迴圈擷取每個author元素內容
$authors = '';
foreach($sx->author as $author)
{
 $authors .= '&' . $author;
}
$authors = substr($authors, 1);
echo $title . ':' . $authors;
?>

輸出結果如下:
Php Book:kaifabu&Younker

PHP:指示支援該函數的最早的 PHP 版本。

SimpleXML函數

__construct() 建立一個新的 SimpleXMLElement 對象。 5
addAttribute() 給 SimpleXML 元素添加一個屬性。 5
addChild() 給 SimpleXML 元素添加一個子項目。 5
asXML() 從 SimpleXML 元素擷取 XML 字串。 5
attributes() 擷取 SimpleXML 元素的屬性。 5
children() 擷取指定節點的子。 5
getDocNamespaces() 擷取 XML 文檔的命名空間。 5
getName() 擷取 SimpleXML 元素的名稱。 5
getNamespaces() 從 XML 資料擷取命名空間。 5
registerXPathNamespace() 為下一次 XPath 查詢建立命名空間語境。 5
simplexml_import_dom() 從 DOM 節點擷取 SimpleXMLElement 對象。 5
simplexml_load_file() 從 XML 文檔擷取 SimpleXMLElement 對象。 5
simplexml_load_string() 從 XML 字串擷取 SimpleXMLElement 對象。 5
xpath() 對 XML 資料運行 XPath 查詢。 5

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.