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对象集合,无则返回空

相关文章
相关标签/搜索