php操作xml

高洛峰
發布: 2016-12-24 11:09:25
原創
1723 人瀏覽過

要操作的資料

   David Flanagan   Luke Welling Laura Thomson   David Courley Brian Totty  
登入後複製

XML幾個基本概念
1、 節點:節點也就是很多程式語言中處理XML時的Node,節點是一個比較寬泛的概念,在XML中元素,屬性,名字空間,註釋,文字內容,處理指令,還有整個文件都屬於節點,也就是說XML文件中每個獨立的一小部分都是節點, 是, 也是,name=”XXXX」也是, 標籤是,甚至作者的名字David Flanagan都是一個文本節點。
2、元素:很多程式語言都有對XML處理,節點是一個很廣泛的概念,因為要統一API,對節點不會有過多方法,而元素也就是Element是節點的一個子集,簡單講就是 這樣的標籤才算,一般會有很多針對元素的操作方法。
3、屬性:這個比較好理解,在<>裡面的類似XX=”OO”等東西都是屬性節點
4、轉義字符:和HTML等類似,xml也有語言佔用的符號,想使用的這些特殊字符的時候需要轉義

php操作xml

DOMDocument對象
我使用的是DOMDocument對象來操作xml,感覺用起來比simpleXml科學一些,當然第一天使用php,純屬個人感覺。 DOMDocument有幾個常用的屬性和方法。

php操作xml

載入xml

$path=$_SERVER["DOCUMENT_ROOT"].'/books.xml'; $books=new DOMDocument(); $books->load($path);
登入後複製

讀取/遍歷節點與屬性

$bookElements=$books->getElementsByTagName('book'); foreach($bookElements as $book){ foreach ($book->attributes as $attr) { echo strtoupper($attr->nodeName).' —— '.$attr->nodeValue.'
'; } echo "AUTHOR: "; foreach ($book->getElementsByTagName('author') as $author) { echo $author->nodeValue.' '; } echo '

'; }
登入後複製

php操作xml

當然對於很多屬性,只想讀一個,可以透過item(index)方法按索引

強大的xpath查詢

echo $book->attributes->item(1)->nodeValue;
登入後複製

修改屬性/節點

还可以通过强大的xpath查询
登入後複製

php操作xml

對屬性修改可以直接存取其nodeValue改動,也可以使用setAttribute方法,改動完了別忘了使用save保存。

foreach($bookElements as $book){ foreach ($book->attributes as $attr) { #$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue)); $attr->nodeValue=strtoupper($attr->nodeValue); } echo "AUTHOR: "; foreach ($book->getElementsByTagName('author') as $author) { $author->nodeValue=strtoupper($author->nodeValue); } } $books->save($path);
登入後複製

新增元素/屬性

$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue)); $attr->nodeValue=strtoupper($attr->nodeValue);
登入後複製

刪除屬性/節點

$newBook=$books->createElement('book'); #创建新元素 $newBook->setAttribute('name','PHP Objects, Patterns, and Practice');#创建新属性,方法一 $publisher=$books->createAttribute('publisher');#创建新属性,方法二 $publisher->nodeValue='Apress L.P'; $newBook->appendChild($publisher); #把属性添加到元素上 $author=$books->createElement('author');#创建子元素 $author->nodeValue='Matt Zandstra'; $newBook->appendChild($author);#把子元素添加到父元素上 $books->documentElement->appendChild($newBook);#添加整个节点 $books->save($path);
登入後複製

php操作xml

更多php操作xml相關文章請追蹤PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!