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

2015-01-24信息快讯网

本篇文章是对在php中DOMElement 操作xml 文档的实现进行了分析介绍。需要的朋友参考下

/*<?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程序报date()警告的处理(date_default_timezone_set)
php 修改、增加xml结点属性的实现代码
PHP字符串长度计算 - strlen()函数使用介绍
PHP关于IE下的iframe跨域导致session丢失问题解决方法
php MessagePack介绍
PHP file_get_contents设置超时处理方法
php json_encode值中大括号与花括号区别
Zend studio文件注释模板设置方法
php stream_get_meta_data返回值
PHP中time(),date(),mktime()区别介绍
php读取本地文件常用函数(fopen与file_get_contents)
php增删改查示例自己写的demo
解析PHP中empty is_null和isset的测试
win7下memCache的安装过程(具体操作步骤)
浅析memcache启动以及telnet命令详解
解析linux下安装memcacheq(mcq)全过程笔记
探讨:array2xml和xml2array以及xml与array的互相转化
php 备份数据库代码(生成word,excel,json,xml,sql)
深入理解:XML与对象的序列化与反序列化
探讨:使用XMLSerialize 序列化与反序列化
基于PHP常用函数的用法详解
PHP 自定义错误处理函数的使用详解
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
PHP命名空间(Namespace)的使用详解
基于Zend的Config机制的应用分析
Zend的Registry机制的使用说明
Zend的MVC机制使用分析(二)
Zend的MVC机制使用分析(一)
php中is_null,empty,isset,unset 的区别详细介绍
php获取本地图片文件并生成xml文件输出具体思路
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
关于Iframe如何跨域访问Cookie和Session的解决方法
自定义php类(查找/修改)xml文档
php中DOMElement操作xml文档实例演示
用Php编写注册后Email激活验证的实例代码
php截取字符串并保留完整xml标签的函数代码
php函数array_merge用法一例(合并同类数组)
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
PHP读取xml方法介绍
Could not load type System.ServiceModel.Activation.HttpModule解决办法
©2014-2024 dbsqp.com