/*<?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. XML(4)XDocument和XmlDocument搜索指定的节点
  2. xml学习(7) .net 获取xml节点或者属性最大值
  3. FireFox对XML的处理兼容IE的节点处理方法
  4. 读写xml所有节点个人小结 和 读取xml节点的数据总结
  5. 详解XML命名空间(XML Namespaces)介绍以及节点读取方法的示例代码
  6. xml创建根节点、子节点的示例代码分享
  7. 详细介绍XML中名字空间的代码案例
  8. java通过XPath解析xml节点的代码详解
  9. 有关xml节点的文章推荐10篇

随机推荐

  1. Android 签名详解
  2. Android 查询天气源码分享
  3. 为Android内核添加hello world驱动并添加
  4. A06_RelativeLayout的属性设置
  5. Qt5.8开发Android:强制横屏
  6. android:imeOptions 控制软键盘右下角按
  7. Android 各类生命周期详解
  8. 玩转FragmentTabHost,实现底部导航栏
  9. Android与JavaScript方法相互调用!
  10. Android:CourseTableLayout — 好用的Andr