通過(guò)DOM擴(kuò)展創(chuàng)建一個(gè)DOMDocument對(duì)象,通過(guò)DOMDocument對(duì)象的方法向文檔添加元素,最后通過(guò)save()或saveXML()方法來(lái)生成文檔,也可以通過(guò)SimpleXML來(lái)快速解析xml文檔.
例子:DOM XML 解析器函數(shù)是 PHP 核心的組成部分,無(wú)需安裝就可以使用這些函數(shù).
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
假如您在瀏覽器窗口中查看源代碼,會(huì)看到下面這些 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>
上面的例子創(chuàng)建了一個(gè) DOMDocument-Object,并把 "note.xml" 中的 XML 載入這個(gè)文檔對(duì)象中.
saveXML() 函數(shù)把內(nèi)部 XML 文檔放入一個(gè)字符串,這樣我們就可以輸出它.例子代碼如下:
- <?php
- //創(chuàng)建一個(gè)新文檔
- $dom = new DOMDocument('1.0');
- //創(chuàng)建根元素book,并將其添加到文檔中
- $book = $dom->appendChild($dom->createElement('book'));
- //創(chuàng)建一個(gè)title元素,并將其添加到$book中
- $title = $book->appendChild($dom->createElement('title'));
- $title->appendChild($dom->createTextNode('Php Book'));
- //為title元素的添加屬性cover,屬性值soft
- $title->setAttribute('cover','soft');
- //創(chuàng)建author元素,并將其添加到$book中
- $kaifabu = $book->appendChild($dom->createElement('author'));
- //為author元素添加文本
- $kaifabu->appendChild($dom->createTextNode('kaifabu'));
- //創(chuàng)建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());
- ?>
- //輸出結(jié)果如下:
- //開(kāi)源代碼Vevb.com
- <?xml version="1.0" ?>
- <book>
- <title cover="soft">Php Book</title>
- <author>kaifabu</author>
- <author>Younker</author>
- </book>
注:如果上面生成XML這步改成$dom->save(‘books.xml’);直接生成一個(gè)books.xml文件.
下面我們利用simplexml來(lái)解析xml文件
SimpleXML 函數(shù)允許您把 XML 轉(zhuǎn)換為對(duì)象,通過(guò)普通的屬性選擇器或數(shù)組迭代器,可以處理這個(gè)對(duì)象,就像處理任何其他對(duì)象一樣.
其中的一些函數(shù)需要最新的 PHP 版本。
安裝:SimpleXML 函數(shù)是 PHP 核心的組成部分,無(wú)需安裝即可使用這些函數(shù),代碼如下:
- <?php
- //使用SimpleXML擴(kuò)展解析XML文檔,解析出來(lái)是一個(gè)對(duì)象,可以通過(guò)對(duì)象獲取它的元素內(nèi)容
- $sx = simplexml_load_file('books.xml');
- //獲取title標(biāo)簽的內(nèi)容
- $title = $sx->title;
- //因?yàn)橛袃蓚€(gè)author元素,通過(guò)循環(huán)獲取每個(gè)author元素內(nèi)容
- $authors = '';
- foreach($sx->author as $author)
- {
- $authors .= '&' . $author;
- }
- $authors = substr($authors, 1);
- echo $title . ':' . $authors;
- ?>
- //輸出結(jié)果如下:
- //Php Book:kaifabu&Younker
PHP:指示支持該函數(shù)的最早的 PHP 版本.
SimpleXML函數(shù)
__construct() 創(chuàng)建一個(gè)新的 SimpleXMLElement 對(duì)象。 5
addAttribute() 給 SimpleXML 元素添加一個(gè)屬性。 5
addChild() 給 SimpleXML 元素添加一個(gè)子元素。 5
asXML() 從 SimpleXML 元素獲取 XML 字符串。 5
attributes() 獲取 SimpleXML 元素的屬性。 5
children() 獲取指定節(jié)點(diǎn)的子。 5
getDocNamespaces() 獲取 XML 文檔的命名空間。 5
getName() 獲取 SimpleXML 元素的名稱。 5
getNamespaces() 從 XML 數(shù)據(jù)獲取命名空間。 5
registerXPathNamespace() 為下一次 XPath 查詢創(chuàng)建命名空間語(yǔ)境。 5
simplexml_import_dom() 從 DOM 節(jié)點(diǎn)獲取 SimpleXMLElement 對(duì)象。 5
simplexml_load_file() 從 XML 文檔獲取 SimpleXMLElement 對(duì)象。 5
simplexml_load_string() 從 XML 字符串獲取 SimpleXMLElement 對(duì)象。 5
新聞熱點(diǎn)
疑難解答