解析php DOMElement 操作xml 文档的实现代码

互联网 16-12-24
/*<?xml version="1.0" encoding="UTF-8" standalone="no"?>   <!-- css的样式定义,不加点。如:name{color:red;} -->  <?xml-stylesheet type="text/css" href="css.css"?>  <!-- 引入dtd文档定义文件 (根元素:班级)<!DOCTYPE 班级 SYSTEM "class.dtd" /> -->  <!-- <!DOCTYPE 班级[  <!ELEMENT 班级 (学生+)>  <!ELEMENT 学生 (名字,年龄,介绍)>  <!ELEMENT 名字 (#PCDATA)>  <!ELEMENT 年龄 (#PCDATA)>  <!ELEMENT 介绍 (#PCDATA)>  ] /> -->  <班级>  <学生 number="101">  <名字>孙悟空</名字>  <名字>孙行者</名字>  <年龄>123</年龄>  <介绍><![CDATA[&*$%特殊字串^&#$&]]></介绍>  </学生>  <学生 number="10"2">  <名字>白骨精</名字>  <年龄>140</年龄>  <介绍>介绍内容</介绍>  </学生>  </班级>  */  $xmldoc = new DOMDocument('1.0', 'UTF-8');  $xmldoc->load('datas.xml');  $itemsNodeList = $xmldoc->getElementsbyTagName('学生');  $itemElement = $itemsNodeList->item(0);//得到第一个完整的学生信息节点  $itemChildsNodeList = $itemElement->getElementsbyTagName('名字');//得到子节点“名字”,也许有多个名字  $itemChildNode = $itemChildsNodeList->item(0);//得到第一个名字节点  echo $itemChildNode->nodeValue;//输出节点值  //封装成函数  $nodeArr = array('名字', '年龄', '介绍');   function getNodeVal($xmldoc, $itemsName, $nodeArr){      $items = $xmldoc->getElementsByTagName($itemsName);       for($i=0; $i < $items->length; $i++){          $item = $items->item($i);          foreach($nodeArr as $node){              $data[$i][] = $item->getElementsByTagName($node)->item(0)->nodeValue;          }      }       return $data;  }  $data = getNodeVal($xmldoc, '学生', $nodeArr);  print_r($data);
//添加节点  $xmldoc = new DOMDocument('1.0', 'UTF-8');  $xmldoc->load('datas.xml');  $items = $xmldoc->getElementsByTagName('班级')->item(0);//根节点  $student =  $xmldoc->createElement('学生');//创建一个新的学生节点  $stu_name = $xmldoc->createElement('名字','张三');  $stu_age = $xmldoc->createElement('年龄','15');  $stu_intro = $xmldoc->createElement('介绍','动手能力强且成绩稳定');  $items->appendChild($student);  $student->appendChild($stu_name);  $student->appendChild($stu_age);  $student->appendChild($stu_intro);  $bytes = $xmldoc->save('datas.xml');   echo ($bytes)? "写入了: $bytes 字节" : '保存失败';  //删除节点  $xmldoc = new DOMDocument('1.0', 'UTF-8');  $xmldoc->load('datas.xml');  $student = $xmldoc->getElementsByTagName('学生')->item(2);//直接找到要删除的节点  $student->parentNode->removeChild($student);//父节点的删除方法  $xmldoc->save('datas.xml');  //修改节点值  $student = $xmldoc->getElementsByTagName('学生')->item(2);  $student->getElementsByTagName('年龄')->item(0)->nodeValue += 10;  $student->setAttribute('id', '110');  $xmldoc->save('datas.xml');  //应用 Xpath 查找节点  $xml = new DOMDocument('1.0', 'UTF-8');  $xml->load('dat.xml');  $xpath = new DOMXPath($xml);  $nodeList = $xpath->query('/aaa/bbb/ddd/fff');  echo $nodeList->item(0)->nodeValue;  //SimpleXML 类操作 xml  /*  <?xml version="1.0" encoding="UTF-8"?>  <books>  <book house="清华出版">  <code>1001</code>  <price>200元</price>  <author>大明</author>  <title>天龙八部</title>  </book>  <book house="北大出版">  <code>1002</code>  <price>321元</price>  <author>张三</author>  <title>笑傲江湖</title>  </book>  <book house="人 民出版">  <code>1004</code>  <price>182元</price>  <author>李四</author>  <title>读者</title>  </book>  </books>  */  $xml = simplexml_load_file('books.xml');  $books = $xml->book;  echo $books[1]->title . $books[1]['house'];//直接指向第二本书  foreach($xml as $item){      echo $item->title,' ',$item['house'],'<br/>';  }

更多解析php DOMElement 操作xml 文档的实现代码相关文章请关注PHP中文网!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:基于PHP对XML的操作详解

相关资讯