解析phpDOMElement操作xml文档的实现代码
/*<?xmlversion="1.0"encoding="UTF-8"standalone="no"?>
<!--css的样式定义,不加点。如:name{color:red;}-->
<?xml-stylesheettype="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=newDOMDocument("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("名字","年龄","介绍");
functiongetNodeVal($xmldoc,$itemsName,$nodeArr){
$items=$xmldoc->getElementsByTagName($itemsName);
for($i=0;$i<$items->length;$i++){
$item=$items->item($i);
foreach($nodeArras$node){
$data[$i][]=$item->getElementsByTagName($node)->item(0)->nodeValue;
}
}
return$data;
}
$data=getNodeVal($xmldoc,"学生",$nodeArr);
print_r($data);
//添加节点
$xmldoc=newDOMDocument("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=newDOMDocument("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=newDOMDocument("1.0","UTF-8");
$xml->load("dat.xml");
$xpath=newDOMXPath($xml);
$nodeList=$xpath->query("/aaa/bbb/ddd/fff");
echo$nodeList->item(0)->nodeValue;
//SimpleXML类操作xml
/*
<?xmlversion="1.0"encoding="UTF-8"?>
<books>
<bookhouse="清华出版">
<code>1001</code>
<price>200元</price>
<author>大明</author>
<title>天龙八部</title>
</book>
<bookhouse="北大出版">
<code>1002</code>
<price>321元</price>
<author>张三</author>
<title>笑傲江湖</title>
</book>
<bookhouse="人民出版">
<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($xmlas$item){
echo$item->title,"",$item["house"],"<br/>";
}
相关文章
- 什么是金山文档轻维表?如何根据日期自动提醒表格中的内容?
- 【说站】css文档流的两种特性
- istio安装文档
- CentOS下使用LibreOffice实现文档格式的转换方式
- 利用xlrd模块实现Python读取Excel文档详解编程语言
- 阿里云MQ-ONS消息队列使用说明文档和demo源码详解编程语言
- Linux下简单有效的XML文件解析方法(linux解析xml文件)
- XML文档编写及XPath表达式详解编程语言
- Oracle数据库的中文文档全面解读(oracle中文文档)
- 使用Oracle导出XML数据的简单教程(oracle导出xml)
- XML数据导入MSSQL:实现简便迅速(xml导入mssql)
- MSSQL 迅速生成可行的文档方案(mssql 生成文档)
- MySQL如何使用XML进行查询(mysql中xml查询)
- XML数据在Redis中的储存与管理(xml数据redis)
- 使用MySQL管理XML表格数据存储与传输的完美组合(mysql xml 表)
- 使用MySQL和XML创建强大的数据表格(mysql xml 表)
- MySQL和XML如何处理小于符号(mysql xml小于)
- ORACLE软件下载文件扫描安全体检(ORACLE下载文档扫描)
- Oracle数据库存储与XML格式交互处理(oracle xml格式)
- 优化Oracle XML伪列体验提升表现(oracle xml伪列)
- 《Istio官方文档》Eureka-Docker快速入门
- juqery学习之五文档处理插入
- js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
- 解析在.net中使用XSLT转换xml文档的示例详解
- C#利用XML创建Excel文档的实现方法
- C#获取Word文档中所有表格的实现代码分享