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.测试等. 那么究竟应该选择什么方向 ...
随机推荐
- python开发_tkinter_多级子菜单
在之前的blog中有提到python的tkinter中的菜单操作 python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐 python开发_tkinter_窗口控件_自 ...
- SPOJ 10232. Distinct Primes
Arithmancy is Draco Malfoy's favorite subject, but what spoils it for him is that Hermione Granger i ...
- codevs 1004 四子连棋 BFS、hash判重
004 四子连棋 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在一个4*4的棋盘上摆放了14颗棋子,其中有7颗白色棋 ...
- Linux下以特定用户运行命令
方法汇总: 1.su 2.sudo 3.runuser 比较常用的方式:su 示例:su - root -s /bin/sh -c "/usr/local/nginx/sbin/nginx& ...
- UIwebview 文件的下载与保存,以及mp3文件的播放
这里只是说说异步 单线程下载与文件的保存 以下载一个mp3文件并保存为例: -(void)loading { //设置文件下载地址 NSString *urlString = [NSString st ...
- HDU 4597 Play Game (DP,记忆化搜索)
Play Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total S ...
- oracle数据库存储过程中NO_DATA_FOUND不起作用解决
oracle数据库存储过程中NO_DATA_FOUND不起作用 1.首先创建一个表lengzijiantest,表中只有一个字段f_id ? 1 2 3 4 5 [cpp] CREATE TABLE ...
- XDM、GDM和KDM
XDM.GDM.KDM是三种X Window的显示管理器 (1)XDM(默认的X Window System Display Manager)(2)GDM(gnome提供的Display Manage ...
- [Node.js]NET模块
摘要 net模块提供了一些用于底层的网络通信的小工具,包含了创建服务器和客户端的方法.可以使用该模块模拟请求等操作. net模块 引入net模块 var net=require("net&q ...
- c++中两个类相互包含引用的相关问题
在构造自己的类时,可能会遇到两个类相互引用的问题. 例如: class A { int i; B b; }; class B { int i; A a; }; 在这种情况下,这样就会出现一个死循环a. ...