simpleXML方式解析XML
注意:
1,獲得屬性值 ,通過陣列下標的形式,陣列下標要大寫
2,當XML檔案中有英文字元和漢字的時候,需要使用 CDATA 來做特殊處理
語法:<![CDATA[ ]]>
<?php
class student{
public $name = 'xiaoer';
function __toString(){
return 'xiaoer';
}
}
$student = new student();
echo $student;
DOM方式和SAX方式的異同:
1,先將XML檔案在記憶體中解析成節點樹,如果XML檔案非常大,會佔用很大的記憶體
SAX:不需要在記憶體中生成節點樹,而是遇到標籤就解析
2,SAX解析速度比DOM要快
3,如果XML結構有問題的話,DOM方式無法解析,因為無法在記憶體中生成節點樹;SAX會一直解析,知道錯誤的發生地
4,DOM一般用於解析複雜的XML;SAX適用於解析資料量特別大的XML檔案
使用simpleXML解析XML檔案
是php專門提供的一種簡單的操作XML檔案的物件
例項化simpleXML物件:
原理:
simpleXMLElement這個物件會將所有的XML的元素轉化成物件,相同的元素名轉化成物件的集合
任務:
按照simpleXMLElement格式去獲得 第三本書的作者:
foreach($books as $book){
echo $book->author;
}
訪問某一個節點:
1,訪問元素的屬性,通過陣列下標的形式
$id = $books[0]['id'];
2,如果獲得的是一個物件的集合,foreach遍歷
3,如果要找具體的某一個元素 通過陣列索引
$first_book = $books[0];
foreach($books as $book){
echo $book->author;
echo $book->title;
}
//增加一個節點:
//我們可以把 $sxe 看作是文件的根節點
$new_book = $sxe ->addChild('book');
//在剛建立的book節點上 增加一個title 內容是 俠客行
$new_book ->addChild('title','俠客行');
//儲存
$sxe ->asXML('book3.xml');
刪除節點
Unset(刪除的節點)
$book = $sxe ->book[4];
unset($book);
修改節點
$sxe ->book[3]->author = '金庸';