dom技术解析xml (php)
1.xml实例
test.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE 班级 SYSTEM "test.dtd">
<!--<!DOCTYPE 班级 [
<!Element 班级 (学生+)>
<!Element 学生 (name,age,sex)>
<!Element name (#PCDATA)>
<!Element age (#PCDATA)>
<!Element sex (#PCDATA)>
]>-->
<班级>
<学生>
//在CDATA中可以嵌入任何内容,包括图片。
//在默认情况下,只要符合书写语法,浏览器不会去检验是否符合逻辑,我们需要自己写代码测试。
<!--<name>悟空"'<></name>
<![CDATA[<age>500><' ""</age>]]>-->
<name>悟空</name>
<age>500</age>
<sex>男</sex>
//人不可能有面积属性,不符合逻辑。
<面积>500</面积>
</学生>
<学生>
<name>白骨精</name>
<age>1000</age>
<sex>女</sex>
</学生>
</班级>
test.dtd
<!Element 班级 (学生+)>
<!Element 学生 (name,age,sex)>
<!Element name (#PCDATA)>
<!Element age (#PCDATA)>
<!Element sex (#PCDATA)>
checkDtd.html
<html>
<head>
<title>测试dtd</title>
<meta http-equiv="content-type"content="text/html;charset=utf-8"/>
<script type="text/javascript">
//创建一个xml解析器
var xmldoc=new ActiveXObject("Microsoft.XMLDOM");
//开启校验功能
xmldoc.validateOnParse=true;
//指定对哪一个xml文件进行校验
xmldoc.load("test.xml");
//如有错误,则输出
document.write("错误信息"+xmldoc.parseError.reason+"<br/>");
document.write("错误信息="+xmldoc.parseError.line+"<br/>");
</script>
</head>
</html>
此检测dtd的方法只适用于IE浏览器,是IE浏览器特有的属性,其他浏览器不支持。
2.php技术操作xml文件
*php dom
*php结合xpath操作xml
*SimpleXml
//phpdom解析xml
test.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE 班级 SYSTEM "test.dtd">
<!--<!DOCTYPE 班级 [
<!Element 班级 (学生+)>
<!Element 学生 (name,age,sex)>
<!Element name (#PCDATA)>
<!Element age (#PCDATA)>
<!Element sex (#PCDATA)>
]>-->
<班级>
<学生>
<name>0</name>
<age>25</age>
<sex>男</sex>
</学生>
<学生>
<name>0</name>
<age>25</age>
<sex>男</sex>
</学生>
<学生>
<name>0</name>
<age>25</age>
<sex>男</sex>
</学生>
</班级>
phpdom.php
<html>
<head>
<meta http-equiv="content-type"content="text/html charset=utf-8"/>
</head>
<?php
//获取Domdocument对象。
$xmldoc=new DOMDocument();
//指定要处理的xml文件,加载xml文件
$xmldoc->load("test.xml");
//希望获取每一个学生的名字
$students=$xmldoc->getElementsByTagName("学生");
echo $students->length;
for($i=0;$i<$students->length;$i++){
$node=$students->item($i);
echo getNodeValue($node,"name")."<br/>";
echo getNodeValue($node,"age")."<br/>";
echo getNodeValue($node,"sex")."<br/>";
}
//$node=$students->item(0);
/*$list=$node->getElementsByTagName("name");
$list1=$list->item(0)->nodeValue;
echo $list1;*/
//echo getNodeValue($node,"age");
function getNodeValue(&$node,$tagName){
return $node->getElementsByTagName($tagName)->item(0)->nodeValue;
}
?>
</html>
//增加节点的操作代码
addNode.php
<html>
<head>
<meta http-equiv="content-type"content="text/html charset=utf-8"/>
</head>
<?php
//获取Domdocument对象。
$xmldoc=new DOMDocument();
//指定要处理的xml文件,加载xml文件
$xmldoc->load("test.xml");
//希望获取每一个学生的名字
$root=$xmldoc->getElementsByTagName("班级")->item(0);
//创建一个学生节点
$name=$xmldoc->createElement("学生");
//创建一个名字节点
$name1=$xmldoc->createElement("name");
//给名字节点赋值
$name1->nodeValue="鑫鑫";
//把名字节点挂载到学生节点之下
$name->appendChild($name1);
//创建年龄节点
$name2=$xmldoc->createElement("age");
//给年龄节点赋值
$name2->nodeValue="25";
//将年龄节点挂载到学生节点之下
$name->appendChild($name2);
//创建性别节点
$name3=$xmldoc->createElement("sex");
//给性别节点赋值
$name3->nodeValue="男";
//将性别节点挂载到学生节点之下
$name->appendChild($name3);
//最后将学生节点挂载到根节点班级之下
$root->appendChild($name);
//回写入xml文件
$xmldoc->save("test.xml");
?>
</html>
//删除节点的操作
<html>
<head>
<meta http-equiv="content-type"content="text/html charset=utf-8"/>
</head>
<?php
//获取Domdocument对象。
$xmldoc=new DOMDocument();
$xmldoc->load("test.xml");
//获取根节点
$root=$xmldoc->getElementsByTagName("班级")->item(0);
//要删除第3个学生
//获取学生节点
$students=$xmldoc->getElementsByTagName("学生");
//获取第三个学生
$stu1=$students->item(0);
//删除第三个学生
//$root->removeChild($stu1);
$stu1->parentNode->removeChild($stu1);
$xmldoc->save("test.xml");
echo "删除成功";
?>
</html>
//更新节点内容的操作
<html>
<head>
<meta http-equiv="content-type"content="text/html charset=utf-8"/>
</head>
<?php
//获取Domdocument对象。
$xmldoc=new DOMDocument();
$xmldoc->load("test.xml");
//获取学生节点
$student=$xmldoc->getElementsByTagName("学生")->item(0);
//获取第三个学生
$stu_name=$student->getElementsByTagName("name")->item(0);
//更新文本的值
$stu_name->nodeValue+="八戒";
$xmldoc->save("test.xml");
echo "更新成功";
?>
</html>
与Java解析xml相比之下,利用PHP解析xml要简单一些,更容易让人理解。
今日暂时分享于此。明日继续。
革命尚未成功,同志仍需努力!
dom技术解析xml (php)的更多相关文章
- dom技术解析xml下jaxp解析器详细代码
1.使用jaxp实现查询操作 person.xml <?xml version="1.0" encoding="UTF-8" standalone=&qu ...
- XML:使用DOM技术解析xML文件中的城市,实现select级联选择
中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...
- 用JAXP的dom方式解析XML文件
用JAXP的dom方式解析XML文件,实现增删改查操作 dom方式解析XML原理 XML文件 <?xml version="1.0" encoding="UTF-8 ...
- Dom方式解析XML
public class TestXML { public static void main(String[] args) throws SAXException, IOException { //D ...
- 用DOM方式解析XML
一.用DOM方式解析XML 此例子节点结构如下: 1.获取book节点属性 (1).如果不知道节点的属性,通过 NamedNodeMap attrs = book.getAttributes(); 来 ...
- 在iOS 开发中用GDataXML(DOM方式)解析xml文件
因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...
- python 之模块之 xml.dom.minidom解析xml
# -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...
- sax技术解析xml下jaxp解析器详细代码
*解析xml的两种技术dom和sax dom:根据xml的层级结构在内存中分配一个树形结构,把xml标签,属性,文本封装成对象. sax方式:事件驱动,边读边解析. 在javax.xml.parser ...
- Java眼中的XML--文件读取--1 应用DOM方式解析XML
初次邂逅XML: 需要解析的XML文件: 这里有两个book子节点. 1.如何进行XML文件解析前的准备工作,另外解析先获取book节点. 这个我后来看懂了: 这个Node的ELEMENT_NODE= ...
随机推荐
- Python基础 数据类型 (字符串、列表、字典、元组、集合、堆、栈、树)
数据类型有整型.布尔.字符串.列表.字典.元组.集合.堆.栈和树. 1.整型: 整型就是数字 数字表示 python2 64位机器,范围-2^63~2^63-1 超出上述范围,python自动转化为l ...
- Android内存泄漏排查利器LeakCanary
开源地址:https://github.com/square/leakcanary 在 build.gralde 里加上依赖, 然后sync 一下, 添加内容如下 dependencies { ... ...
- PHP 运行环境和服务器相关配置
1.在DOS命令窗口输入 mysql -hlocalhost -uroot -p回车 进入mysql数据库, 其中-h表示服务器名,localhost表示本地:-u为数据库用户名,root是mysql ...
- 5.Zabbix 3.0案例
请查看我的有道云笔记: http://note.youdao.com/noteshare?id=15d986179cb65b45c5824e90995109ee&sub=D2E73572D97 ...
- NO.008-2018.02.13《折桂令·春情》元代:徐再思
折桂令·春情_古诗文网 折桂令·春情 元代:徐再思 平生不会相思,才会相思,便害相思.生下来以后还不会相思,才刚刚懂了什么是相思,却深受着相思之苦. 身似浮云,心如飞絮,气若游丝.身像飘浮的云,心 ...
- python 3+djanjo 2.0.7简单学习(五)--Django投票应用
1.编写一个简单的表单 编写的投票详细页面的模板 ("votes/detail.html") ,让它包含一个 HTML <form> 元素: <!DOCTYPE ...
- Reverse Polish notation
Reverse Polish notation is a notation where every operator follows all of its operands. For example, ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Hangfire使用
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- 一、安装 IntelliJ IDEA
首先,双击打开 IntelliJ IDEA 的快捷方式: 在此,需要说明: 如果咱们的电脑曾经安装过 IntelliJ IDEA,并且你在卸载 IntelliJ IDEA 的时候没有删除其配置文件目录 ...
- MVC5 模型 生成EF
在看本篇之前请先去了解一下EF以及如何利用模型生成数据库 https://i.cnblogs.com/posts?categoryid=1107227 看Code First就可以了. 等你了解了E ...