php DOMElement 操作xml 文档的示例代码
来源:互联网 发布:孙兴慜数据 编辑:程序博客网 时间:2024/04/28 12:38
本文为大家提供是一个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/>';
}
原文地址:http://www.adminso.com/articles/view/92073
(站长搜索- http://www.adminso.com/articles -资讯,中国最具专业的站长资讯新闻频道,报道国内外动态权威的站长资讯动向,关注新闻,透视事件热点资讯。)
- php DOMElement 操作xml 文档的示例代码
- PHP操作xml示例代码
- PHP操作xml示例代码
- C# 操作Xml文档的简单示例
- [PHP]操作xml示例
- php操作mysqli(示例代码)
- 一段 js操作xml文件 的示例代码
- XML文档的操作
- [收藏]使用DOM操作XML文档的简单范例代码
- asp.net代码操作xml示例
- PHP操作XML文档属性[]【转】
- php的xml操作
- php建站示例操作 获取文档/目录相关属性
- php中使用DOM类读取XML文件的示例代码
- php中使用DOM类读取XML文件的示例代码
- java中操作xml几种方式的比较和代码示例(DOM,SAX,JDOM,DOM4J)
- java中操作xml几种方式的比较和代码示例(DOM,SAX,JDOM,DOM4J)
- java中操作xml几种方式的比较和代码示例(DOM,SAX,JDOM,DOM4J)
- 关于yii的AR类的save使用
- Java语法-关键字-synchronized
- PHP加密函数 Javascript/Js 解密函数
- 屏幕分辨率与屏幕尺寸关系
- chromeDNS解析失败
- php DOMElement 操作xml 文档的示例代码
- c++运算符重载
- 黑马程序员——第16天下——(API)System,Runtime,Date,Calendar,Math
- 玩转PHP(二)--PHP强大的时间函数:date()
- Service的远程调用
- iText+Flying Saucer生成pdf文档二:给pdf添加页脚
- php输出xml必须header的解决方法
- Unity脚本,平滑跟随目标物体移动和旋转
- 关于<a>标签的 的target属性