PHP 自学之路-----XML编程(Dom技术)
上一节,讲了Xml文件基本语法及元素,实体及Dtd约束技术,下面就正式进入PHP的Xml编程
使用PHP技术对Xml文件进行操作
常用的有以下三种技术:
1、PHP dom
2、PHP结合XPath操作Xml
3、Simplexml技术
首先来说明Dom
Dom(Document object model)文档-对象-模型,核心思想是把一个Xml文件,看成一个对象模型,然后通过对象的方式来操作Xml文件。
1、创建一个Xml文件
在学习过程中发现,自己直接编写的Xml文件,在调用Xml函数的时候总是不能被正确的识别,所以先用PHP来创建一个Xml文件,再进行操作,直接看代码
<?php
//实例化一个DomDocument对象
$dom = new DomDocument('1.0', 'UTF-8');
//如果文件不存在就创建一个
if (!file_exists("xml_test.xml")){
header("Content-Type: text/plain");
$root = $dom->createElement("class");
$dom->appendChild($root);
$dom->save("xml_test.xml");
} else{
$dom->load("xml_test.xml");
}
print $dom->saveXML();
?>
在网页上打开,执行会创建个xml_test.xml文件(这里有个问题是,根目录的名字不能使用汉字,具体没有明白如何去设置?知道的朋友给指点下,非常感谢!)
<?xml version="1.0" encoding="UTF-8"?>
<class/>
2、增加元素
<?php
//addElementsxml.php
$dom = new DOMDocument("1.0", "UTF-8"); $dom->load("xml_test.xml"); $root_class = $dom->getElementsByTagName("class");
$i = 0;
// for($i = 0;$i < 4; $i++){
$root_class_node = $root_class->item($i);
$stu_node=$dom->createElement("student");
$stu_node->setAttribute("xingbie", "man");
$stu_node_name=$dom->createElement("name","name".$i);
//设置属性
$stu_node_name->setAttribute("hel", "23");
$stu_node_age=$dom->createElement("age","21");
$stu_node_introduce=$dom->createElement("introduce","1111");
$stu_node->appendChild($stu_node_name);
$stu_node->appendChild($stu_node_age);
$stu_node->appendChild($stu_node_introduce);
$root_class_node->appendChild($stu_node);
// }
$dom->save("xml_test.xml");
print $dom->saveXML(); ?>
3、遍历元素
<?php
//getNode.php
//解析一个文件的步骤
//1创建一个对象,表示文档
$dom = new DOMDocument("1.0", "UTF-8");
//2制定加载那个Xml,解析那个文件
$dom->load("xml_test.xml");
//3 获取你关新节点
$stu_nodes = $dom->getElementsByTagName("student"); for ($i=0;$i<$stu_nodes->length;$i++){
//取出每个学生
$stu_node = $stu_nodes->item($i);
for($i=0;$i<$stu_node->childNodes->length;$i++){
echo $stu_node->childNodes->item($i)->nodeValue;
echo "<br/>";
}
}
?>
4、删除元素
<?php
//解析一个文件的步骤
//1创建一个对象,表示文档
$dom = new DOMDocument("1.0", "UTF-8");
//2制定加载那个Xml,解析那个文件
$dom->load("xml_test.xml");
//3 获取你关新节点
$stu_nodes = $dom->getElementsByTagName("student");
$stu_node=$stu_nodes->item($stu_nodes->length -1);
$stu_node->parentNode->removeChild($stu_node); $dom->save("xml_test.xml");
?>
5、修改元素属性
<?php
//1创建一个对象,表示文档
$dom = new DOMDocument("1.0", "UTF-8");
//2制定加载那个Xml,解析那个文件
$dom->load("xml_test.xml"); //找到这个学生
$stus=$dom->getElementsByTagName("age")->item(0);
$stus->nodeValue=100; $dom->save("xml_test.xml");
?>
上面介绍了基本DOM操作,增删改查,下一节将有具体的实例来操作
PHP 自学之路-----XML编程(Dom技术)的更多相关文章
- PHP 自学之路-----XML编程(Xpath技术,simpleXml技术)基础入门
XPAth技术 XPath的设计的核心思想,可以通过xpath迅速简介的定位到你希望查找的节点.主要目的是描述节点相对其他节点的位置,可以取得所有符合条件的节点,成为[位置路径]. Xapth主要用来 ...
- 【二十八】xml编程(dom\xpath\simplexml)
1.xml基础概念 作用范围: 作为程序通讯的标准. 作为配置文件. 作为小型数据库. xml语法: <根标签> <标签 元素="元素值" ...>< ...
- PHP自学之路---报表及绘图技术
Ø 报表 a) 什么是报表 报表就是用表格.图表等格式来动态显示数据. b) PHP绘图坐标系 1. 坐标系介绍 下图说明了PHP坐标系.坐标原点位于左上角,以像素为单 ...
- dom技术解析xml下jaxp解析器详细代码
1.使用jaxp实现查询操作 person.xml <?xml version="1.0" encoding="UTF-8" standalone=&qu ...
- 自动化测试学习之路--json、dom编程
1.json: json是JavaScript Object Notation,是一种数据传输格式. 以下程序都是在浏览器的Console下执行的. 创建一个javaScript的对象: var st ...
- 【转】JAVA自学之路
JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...
- 【转】Java自学之路——by马士兵
作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟 ...
- Java自学之路(新手一定要看)
Java自学之路(新手一定要看) 转自尚学堂 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游 ...
- [感悟]马士兵Java自学之路——(精华版)
JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...
随机推荐
- poj 3660 Cow Contest Flyod
Cow Contest Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5989 Accepted: 3234 Descr ...
- Git提交空文件夹的技巧
这个只能说是技巧不能说是方法,原理是在每个空文件夹新建一个.gitignore文件,然后提交. 快捷命令: find . -type d -empty -exec touch {}/.gitignor ...
- spring mvc接收数组
(一)前言 对于springmvc接收数组的问题啊,我试验过几次,但是了有时候成功了,有时候失败了,也不知道为啥的,然后现在又要用到了,所以打算具体看看到底怎么回事,但是了我实验成功了顺便找了好多资料 ...
- node.js第11课(HTTPclient)
一.http模块提供了两个函数http.request和http.get,功能是作为client向HTTPserver发起请求. Ext.Ajax.request({},function ...
- SQLServer2005中的CTE递归查询得到一棵树
最近研究了一下CTE递归查询,感觉这个CTE递归查询蛮好用的,在网上找到了一个比较好的例子,测试例子如下 use City; go create table Tree ( ID ,) primary ...
- 基于springboot的spring JSR validation 后台参数验证
springboot集成JSR参数校验: 1. 导入maven <dependency> <groupId>org.springframework.boot</group ...
- Windows操作系统下的MySQL主从复制及读写分离
一.主服务器(master)配置 1.修改MySQL配置文件my.ini [mysqld] log-bin=mysql-binlog-bin-index=mysql-bin.indexserver-i ...
- Qt移动应用开发(三):使用精灵图片实现帧动画
Qt移动应用开发(三):使用精灵图片实现帧动画 上一篇博文讲到了Qt Quick对于动画的一般支持.动画的形式多样,配合不同的插值函数,能够差点儿实现全部想要的动画效果,而对于游戏的一些特殊的效果比方 ...
- Android网络通信Volley框架源代码浅析(二)
尊重原创 http://write.blog.csdn.net/postedit/25921795 在前面的一片文章Volley框架浅析(一)中我们知道在RequestQueue这个类中,有两个队列: ...
- Dom4j学习笔记
一.Loading XML Data 以下代码从File中或一个URL中读取一个XML文件,并产生一个Document对象.一个Document对象表示了内存中的一棵XML树,可以在这个XML树中进行 ...