您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關解析XML的案例,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一.解析XML
創(chuàng)建demo.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book book_id="1"> <title>php</title> <author>php入門到放棄</author> </book> <book book_id="2"> <title>java</title> <author>java入門到放棄</author> </book> <book book_id="3"> <title>C</title> <author>C入門到放棄</author> </book></bookstore>
使用PHP解析demo.xml中的內容,以獲取到php這個文本節(jié)點為例:
<?php /*思路:1.先載入xml文檔 2.獲取節(jié)點列表對象 3.獲取子節(jié)點對象 4.獲取子節(jié)點列表對象 5.獲取文本對象 如果層級比較深就是循環(huán)2-4步,先拿列表對象,再拿子節(jié)點對象...*/ $dom = new DOMDocument('1.0','UTF-8'); //print_r($dom); //DOMDocument Object $dom->load('demo.xml'); //載入要解析的xml文檔 $titleList = $dom->getElementsByTagName('title'); ////DOMNodeList Object ( [length] => 3 ) 獲取節(jié)點列表對象 $title = $titleList->item(0); //DOMElement Object 獲取子節(jié)點對象 $title = $title->childNodes; //DOMNodeList Object ( [length] => 1 )獲取子節(jié)點列表對象 $title = $title->item(0); //DOMText Object 獲取到文本對象 $text = $title->wholeText; //獲取到文本內容 echo $text; //php echo '<br>'; //也可以直接寫成連貫操作: $text = $dom->getElementsByTagName('title')->item(0)->childNodes->item(0)->wholeText; echo $text; //php echo '<br>'; //第二種方法: $text = $dom->getElementsByTagName('title')->item(0)->nodeValue; //獲取到文本內容 echo $text; //php
除了解析之外,還可以對xml節(jié)點進行刪除和替換操作:
$dom = new DOMDocument('1.0','UTF-8'); $dom->load('demo.xml'); //載入要解析的xml文檔 /** *xml刪除節(jié)點 * */ $php = $dom->getElementsByTagName('book')->item(0); //獲取文本節(jié)點 $php->parentNode->removeChild($php); //獲取文本節(jié)點的父節(jié)點,然后站在父節(jié)點的立場刪除子文本節(jié)點 /** * xml替換節(jié)點 * */ $java = $dom->getElementsByTagName('title')->item(0); //獲取要替換的文本節(jié)點 $newnode = $dom->createTextNode('python'); //創(chuàng)建新的文本節(jié)點 $java->replaceChild($newnode,$java->firstChild); //用新節(jié)點替換舊文本節(jié)點內容 header("content-type:text/xml"); echo $dom->saveXML(); //直接輸出xml文本
二.創(chuàng)建XML
使用PHP創(chuàng)建一個如下的XML文件:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book book_id="1"> <title>php</title> <author><![CDATA[PHP是世界上最好的編程語言.emmm...]]></author> </book></bookstore>
PHP代碼:
<?php $dom = new DOMDocument('1.0','UTF-8'); $text = $dom->createTextNode('php'); //創(chuàng)建文本節(jié)點 $title = $dom->createElement('title'); //創(chuàng)建普通節(jié)點 $title->appendChild($text); //將文本節(jié)點作為子節(jié)點添加到普通節(jié)點內 $cdata = $dom->createCDATASection('PHP是世界上最好的編程語言.emmm...'); //創(chuàng)建CDATA節(jié)點 $author = $dom->createElement('author'); //創(chuàng)建普通節(jié)點 $author->appendChild($cdata); //將CDATA節(jié)點作為子節(jié)點添加到普通節(jié)點內 $book = $dom->createElement('book'); //創(chuàng)建普通節(jié)點 //將上面創(chuàng)建的兩個普通節(jié)點作為子節(jié)點添加到普通節(jié)點內 $book->appendChild($title); $book->appendChild($author); $book_id = $dom->createAttribute('book_id'); //創(chuàng)建屬性名 $book_id->value = '1'; //創(chuàng)建屬性值 $book->appendChild($book_id); //將屬性加到普通節(jié)點內 $bookstore = $dom->createElement('bookstore'); //創(chuàng)建普通節(jié)點 $bookstore->appendChild($book); //將普通節(jié)點作為子節(jié)點添加到普通節(jié)點內 $dom->appendChild($bookstore); //將普通節(jié)點添加到文檔內 // header("content-type:text/xml"); // echo $dom->saveXML(); //直接輸出xml文本 echo $dom->save('demo.xml'); //生成xml文件
在瀏覽器輸出如下圖:
關于解析XML的案例就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。