xml之phpdom操作
php xml编程
XML解析技术介绍
1.php与DOM
2.PHP与XPath
3.SimpleXML
DOM(document object model)文档对象模型
把一个文件看做一个对象模型,通过对象的方式来操作各个节点
元素节点 属性节点 文本节点
要求:对xml文件进行CRUD操作 create read update delete 增删改查
@查找节点元素
1.//创建DOMDocument对象
$docxml=new DOMDocument();
2.加载指定的xml文件,在内存形成DOM树
$docxml->load('class.xml');
3.查询目标节点进行操作
$node=$docxml->getElementsByTagName('student'); 所有DOMNodeList 节点列表
返回所有节点为class的节点类型(DOMNodelList) 节点对象
var_dump($node);
DOMNodelList节点具有length属性 有几个节点
$node->length;
4.遍历取出需要的学生节点
item()方法
for($i=0;$i<$node->length;$i++){
$stu=$node->item($i);
getNodeVal($stu,'name');
}
5.取出需要的元素
取出第几个节点元素
$stu=$node->item(0);
取出名字
$stuname=$stu->getElementsByTagName('name');
echo $stuname->item(0)->nodeValue;
函数简化取值操作
function getNodeVal(&$MyNode,$tagName){
return $MyNode->getElementsByTagName($tagName)->item(0)->nodeValue;
}
$docxml=new DOMDocument();
$docxml->load('class.xml');
function getNodeVal(&$MyNode,$tagName){
return $MyNode->getElementsByTagName($tagName)->item(0)->nodeValue;
}
echo getNodeVal($docxml,'age');
@ 创建元素节点
<?php
//1.创建xmldoc对象
$docxml=new DOMDocument();
//2.加载xml文件
$docxml->load('class.xml');
//3.取挂在根节点
$root=$docxml->getElementsByTagName('class')->item(0); 如果不加item(0) 则为 DOMNodeList节点类型 加上item(0) 为DOMElement类型对象
//4.创建节点
$stu_node=$docxml->createElement('student');
$stu_node_name=$docxml->createElement('name');
$stu_node_name->nodeValue='liming'; 类型 DOMElement extends DOMNode
//挂在节点构建DOM树
$stu_node->appendChild($stu_node_name);
$stu_node_age=$docxml->createElement('age');
$stu_node_age->nodeValue='25';
$stu_node->appendChild($stu_node_age);
//5.挂在到根节点下
$root->appendChild($stu_node);
添加属性
$stu_node->setAttribute("sex","boy");
删除属性
$stu_node->removeAttribute("sex");
此时都在内存中运行没有保存到xml中,所以需要保存到xml中
6.$xmldoc->save("class.xml"); 把树回写到xml中
?>
如果save到源文件 相当于对文件添加更新,如果save是新的文件名,则保存到新文件里(包括旧文件里的内容)
@删除节点元素
找到要删除的节点 用父节点删除此节点
1. $stu=$docxml->getELementsByTagName("stu");
$stu1=$stu->item(2);
2.$stu1->parentNode->removeChild($stu1);
3.更新xml文件
$docxml->save("class.xml");
@ 更新节点
把第一个学生年龄+10
1.找到学生
$stu=$docxml->getELementsByTagName("stu");
$stu1=$stu->item(0);
2.$stu_age=$stu1->getElementsByTagName("age")->item(0)
因为不知道有几个年龄元素 所以需要item取出
3.$stu_age->nodeValue+=10;
4.更新xml文件
Xpath技术的使用价值
dom操作需要一层一层的查找
dom操作可以实现跨层查找,但不能保持层次关系,所以使用xpath技术,实现跨层次并且 层次关系清楚
XPath(XML Path Language)是一种标示节点位置的语言,可以用来描述XML元素的位置,如同硬盘资料夹的档案路径
XPath可以指出XML元素在xml文件中的位置,即树状结构的节点位置
核心思想:
通过xpath迅速定位你想查找的节点
PHP程序在载入xml文件建立DOMDocument对象后,就可以建立DOMXPath对象
//1.创建xmldoc对象
$docxml=new DOMDocument();
//2.加载xml文件
$docxml->load('class.xml');
//3.创建xpath对象
$xpath=new DOMXPath($docxml);
//4.使用query()方法找出XPath位置路径表达式的节点对象
$items=$xpath->query("/bb/cc");
返回DOMNodeList对象集合,无则返回空
xml之phpdom操作的更多相关文章
- Linq对XML的简单操作
前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...
- SQL Server对Xml字段的操作
T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和 ...
- XML转换为对象操作类详解
//XML转换为对象操作类 //一,XML与Object转换类 using System.IO; using System.Runtime.Serialization.Formatters.Binar ...
- 更新java对xml文件的操作
//更新java在xml文件中操作的内容 public static void upda(Document doc) throws Exception{ //创建一个TransformerFactor ...
- (转)SQL对Xml字段的操作
T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和 ...
- SQL对Xml字段的操作
转:http://www.cnblogs.com/youring2/archive/2008/11/27/1342288.html T-Sql操作Xml数据 一.前言 SQL Server 2005 ...
- dom4j解析XML的CURD操作
在开发JavaWeb项目中通常是利用XML配置文件来提高应用程序的访问效率,而在配置XML的同时,更多时候是对XML进行解析. 一.解析XML配置文件有两种机制: DOM和SAX的机制: DOM是将整 ...
- 实现动态的XML文件读写操作
实现动态的XML文件读写操作(依然带干货) 前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义 ...
- XML文档操作之JAXP下实现
JAXP是java API for xml PRocessing的缩写. 其API可以在javax.xml.parsers 这个包中找到.这个包向用户提供了两个最重要的工厂类,SAXParserFac ...
随机推荐
- Java利用正则表达式统计某个字符串出现的次数
//统计某个字符出现的次数 private void countSubString(){ String string1="香蕉.玉米.面粉"; String string2=&qu ...
- Dreamweaver中清除php代码中多余空行的方法
使用DW自带的搜索功能,利用正则表达式 使用正则表达式搜索:\r\n\s*\r\n即可搜到代码中的空行,再用回车符\n替换即可消除代码中的多余空行
- Linux内核分析:页回收导致的cpu load瞬间飙高的问题分析与思考--------------蘑菇街技术博客
http://mogu.io/156-156 摘要 本文一是为了讨论在Linux系统出现问题时我们能够借助哪些工具去协助分析,二是讨论出现问题时大致的可能点以及思路,三是希望能给应用层开发团队介绍一些 ...
- 【转】针对iOS VS. Android开发游戏的优劣——2013-08-25 17
http://game.dapps.net/gamedev/experience/8670.html 问题:如果你正在一个新工作室开发一款新的平板/手机游戏,你会选择iOS还是Android? 回答: ...
- the assignment of reading paper
在 IEEE 上找到Increasing Dependability of Component-based Software Systems by Online Failure Prediction, ...
- 深入理解计算机系统第二版习题解答CSAPP 2.4
不进行数字转换为二进制和十六进制,计算结果. A. 0x503C + 0x8 = 0x5044 B. 0x503C - 0x40 = 0x4FFC C. 0x503C + 64 = 0x503C + ...
- linux部署tomcat
安装说明 安装环境:CentOS-6.5安装方式:源码安装 软件:apache-tomcat-6.0.45.tar.gz下载地址:http://tomcat.apache.org/download-6 ...
- Java并发——Fork/Join框架
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/4631466. ...
- Java json工具类,jackson工具类,ObjectMapper工具类
Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...
- JavaScript入门(6)
一.if语句 if语句是基于条件成立才执行相应代码时使用的语句 语法: if(条件) {条件成立时执行代码} 注: if小写,大写字母IF会出错! 二.if...else语句(二选一) 语法: if( ...