php xml編程
XML解析技術介紹
1.php與DOMphp
2.PHP與XPathnode
3.SimpleXML編程
DOM(document object model)文檔對象模型
把一個文件看作一個對象模型,經過對象的方式來操做各個節點
元素節點 屬性節點 文本節點app
要求:對xml文件進行CRUD操做 create read update delete 增刪改查dom
@查找節點元素
1.//建立DOMDocument對象
$docxml=new DOMDocument();
2.加載指定的xml文件,在內存造成DOM樹
$docxml->load('class.xml');
3.查詢目標節點進行操做
$node=$docxml->getElementsByTagName('student'); 全部DOMNodeList 節點列表
返回全部節點爲class的節點類型(DOMNodelList) 節點對象
var_dump($node);函數
DOMNodelList節點具備length屬性 有幾個節點
$node->length;
4.遍歷取出須要的學生節點
item()方法spa
for($i=0;$i<$node->length;$i++){
$stu=$node->item($i);
getNodeVal($stu,'name');
}xml
5.取出須要的元素對象
取出第幾個節點元素
$stu=$node->item(0);
取出名字
$stuname=$stu->getElementsByTagName('name');
echo $stuname->item(0)->nodeValue;blog
函數簡化取值操做
function getNodeVal(&$MyNode,$tagName){
return $MyNode->getElementsByTagName($tagName)->item(0)->nodeValue;
}
$docxml=new DOMDocument(); $docxml->load('class.xml'); function getNodeVal(&$MyNode,$tagName){ return $MyNode->getElementsByTagName($tagName)->item(0)->nodeValue; } echo getNodeVal($docxml,'age');
@ 建立元素節點
<?php
//1.建立xmldoc對象
$docxml=new DOMDocument();
//2.加載xml文件
$docxml->load('class.xml');
//3.取掛在根節點
$root=$docxml->getElementsByTagName('class')->item(0); 若是不加item(0) 則爲 DOMNodeList節點類型 加上item(0) 爲DOMElement類型對象
//4.建立節點
$stu_node=$docxml->createElement('student');
$stu_node_name=$docxml->createElement('name');
$stu_node_name->nodeValue='liming'; 類型 DOMElement extends DOMNode
//掛在節點構建DOM樹
$stu_node->appendChild($stu_node_name);
$stu_node_age=$docxml->createElement('age');
$stu_node_age->nodeValue='25';
$stu_node->appendChild($stu_node_age);
//5.掛在到根節點下
$root->appendChild($stu_node);
添加屬性
$stu_node->setAttribute("sex","boy");
刪除屬性
$stu_node->removeAttribute("sex");
此時都在內存中運行沒有保存到xml中,因此須要保存到xml中
6.$xmldoc->save("class.xml"); 把樹回寫到xml中
?>
若是save到源文件 至關於對文件添加更新,若是save是新的文件名,則保存到新文件裏(包括舊文件裏的內容)
@刪除節點元素
找到要刪除的節點 用父節點刪除此節點
1. $stu=$docxml->getELementsByTagName("stu");
$stu1=$stu->item(2);
2.$stu1->parentNode->removeChild($stu1);
3.更新xml文件
$docxml->save("class.xml");
@ 更新節點
把第一個學生年齡+10
1.找到學生
$stu=$docxml->getELementsByTagName("stu");
$stu1=$stu->item(0);
2.$stu_age=$stu1->getElementsByTagName("age")->item(0)
由於不知道有幾個年齡元素 因此須要item取出
3.$stu_age->nodeValue+=10;
4.更新xml文件
Xpath技術的使用價值
dom操做須要一層一層的查找
dom操做能夠實現跨層查找,但不能保持層次關係,因此使用xpath技術,實現跨層次而且 層次關係清楚
XPath(XML Path Language)是一種標示節點位置的語言,能夠用來描述XML元素的位置,如同硬盤資料夾的檔案路徑
XPath能夠指出XML元素在xml文件中的位置,即樹狀結構的節點位置
核心思想:
經過xpath迅速定位你想查找的節點
PHP程序在載入xml文件創建DOMDocument對象後,就能夠創建DOMXPath對象
//1.建立xmldoc對象
$docxml=new DOMDocument();
//2.加載xml文件
$docxml->load('class.xml');
//3.建立xpath對象
$xpath=new DOMXPath($docxml);
//4.使用query()方法找出XPath位置路徑表達式的節點對象
$items=$xpath->query("/bb/cc");
返回DOMNodeList對象集合,無則返回空