首頁  >  文章  >  後端開發  >  PHP使用DOM和simplexml讀取xml文件的方法詳解

PHP使用DOM和simplexml讀取xml文件的方法詳解

墨辰丷
墨辰丷原創
2018-05-25 17:13:061412瀏覽

這篇文章主要介紹了PHP使用DOM和simplexml讀取xml文檔的方法,結合實例形式分析了php使用DOM及simplxml針對xml文件的創建、載入、讀取等相關操作技巧,需要的朋友可以參考下

本文實例講述了PHP使用DOM和simplexml讀取xml文件的方法。分享給大家供大家參考,具體如下:

實例  用DOM取得下列xml文檔中所有金庸小說的書名,該xml文檔所在位置為./books.xml:

#
<?xml version="1.0" encoding="utf-8"?>
<root>
 <book>
  <title>天龙八部</title>
  <author>金庸</author>
 </book>
 <book>
  <title>陆小凤</title>
  <author>古龙</author>
 </book>
 <book>
  <title>倚天屠龙记</title>
  <author>金庸</author>
 </book>
 <book>
  <title>西游记</title>
  <author>吴承恩</author>
 </book>
 <book>
  <title>神雕侠侣</title>
  <author>金庸</author>
 </book>
 <book>
  <title>射雕英雄传</title>
  <author>金庸</author>
 </book>
</root>

用DOM程式碼實作:

#DOM讀取xml文檔步驟:1、建立DOM物件-》2、載入DOM文檔內容——》3、截取要讀取內容所在的標籤——》取得要讀取的內容。

header(&#39;Content-type:text/html;charset=utf-8&#39;);
$arr=array();
$dom = new DOMDocument();//创建DOM对象
$dom->load(&#39;./books.xml&#39;);//载入xml文档
print_r($dom);
echo &#39;<hr>&#39;;
$dom = $dom->getElementsByTagName(&#39;book&#39;);//截取标签
for($i=0;$i<$dom->length;$i++){
 if($dom->item($i)->childNodes->item(1)->childNodes->item(0)->wholeText==&#39;金庸&#39;){
  $arr[] = $dom->item($i)->childNodes->item(0)->childNodes->item(0)->wholeText.&#39;<br />&#39;;//获取内容
 }
}
print_r($arr);

使用getElementsByTagName 和childNodes 後回傳的都是對象,所以它們後面必須使用item(int),即使它們回傳的物件裡面只包含一個項目,也必須用item(0)來指定,否則就會出錯。

用simplexml程式碼實作:

$simxml = simplexml_load_file(&#39;./books.xml&#39;);
$t = $simxml->book;
$arr=array();
foreach ($t as $v){
 if($v->author==&#39;金庸&#39;){
  $arr[] = (string)$v->title;
 }
}
print_r($arr);

使用simplexml_load_file 後面傳回的是對象,該物件裡的項目既有物件又有數組,不管是物件還是數組,要循環裡面的內容都可以用foreach。該實例最後取得的內容 $v->title 其實是個對象,所以要用 string 轉換為字串。

以上就是本文的全部內容,希望對大家的學習有所幫助。


相關推薦:

PHP實作基於SimpleXML產生和解析xml的方法

PHP xml解析與生成之SimpleXML使用介紹

#php SimpleXML()函數用法詳解

########################################################### ##########

以上是PHP使用DOM和simplexml讀取xml文件的方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn