xml之phpdom操做

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對象集合,無則返回空

相關文章
相關標籤/搜索