PHP通过DOM操作XML
PHP XML操作类DOMDocument属性及方法
注意大小写一定不能弄错.
属性:
- Attributes 存储节点的属性列表(只读)
- childNodes 存储节点的子节点列表(只读)
- dataType 返回此节点的数据类型
- Definition 以DTD或XML模式给出的节点的定义(只读)
- Doctype 指定文档类型节点(只读)
- documentElement 返回文档的根元素(可读写)
- firstChild 返回当前节点的第一个子节点(只读)
- Implementation 返回XMLDOMImplementation对象
- lastChild 返回当前节点最后一个子节点(只读)
- nextSibling 返回当前节点的下一个兄弟节点(只读)
- nodeName 返回节点的名字(只读)
- nodeType 返回节点的类型(只读)
- nodeTypedValue 存储节点值(可读写)
- nodeValue 返回节点的文本(可读写)
- ownerDocument 返回包含此节点的根文档(只读)
- parentNode 返回父节点(只读)
- Parsed 返回此节点及其子节点是否已经被解析(只读)
- Prefix 返回名称空间前缀(只读)
- preserveWhiteSpace 指定是否保留空白(可读写)
- previousSibling 返回此节点的前一个兄弟节点(只读)
- Text 返回此节点及其后代的文本内容(可读写)
- url 返回最近载入的XML文档的URL(只读)
- Xml 返回节点及其后代的XML表示(只读)
方法:
- appendChild 为当前节点添加一个新的子节点,放在最后的子节点后
- cloneNode 返回当前节点的拷贝
- createAttribute 创建新的属性
- createCDATASection 创建包括给定数据的CDATA段
- createComment 创建一个注释节点
- createDocumentFragment 创建DocumentFragment对象
- createElement 创建一个元素节点
- createEntityReference 创建EntityReference对象
- createNode 创建给定类型,名字和命名空间的节点
- createPorcessingInstruction 创建操作指令节点
- createTextNode 创建包括给定数据的文本节点
- getElementsByTagName 返回指定名字的元素集合
- hasChildNodes 返回当前节点是否有子节点
- insertBefore 在指定节点前插入子节点
- Load 导入指定位置的XML文档
- loadXML 导入指定字符串的XML文档
- removeChild 从子结点列表中删除指定的子节点
- replaceChild 从子节点列表中替换指定的子节点
- Save 把XML文件存到指定节点
- selectNodes 对节点进行指定的匹配,并返回匹配节点列表
- selectSingleNode 对节点进行指定的匹配,并返回第一个匹配节点
- transformNode 使用指定的样式表对节点及其后代进行转换
- transformNodeToObject 使用指定的样式表将节点及其后代转换
<?php
//读取xml
$dom=new DOMDocument('1.0');
$dom->load('data.xml');
$em=$dom->getElementsByTagName('videos');//最外层节点
$em=$em->item(0);
$items=$em->getElementsByTagName('video');//节点
//如果不用读取直接添加的话把下面这一段去掉即可
foreach($items as $a){
foreach($a->attributes as $b){//$b->nodeValue;节点属性的值$b->nodeName;节点属性的名称
echo $b->nodeName;
echo ":";
echo $b->nodeValue;
echo "<br/>";
}
}
//下面是往xml写入一行新的
$t=$dom->createElement('video');//<video
$t->setAttribute('title','1');//<video name="data"
$t->setAttribute('src','2');//<video name="data" src="2"
$t->setAttribute('img','1');//<video name="data" img="1"
$em->appendChild($t);//<video name="data" img="1"/>
$dom->save('data.xml');
?> 当时的xml文档: <?xml version="1.0"?>
<videos>
<video img="a" url="1" title="1" nickname="1" tag="1" vid="1" star="1"/>
<video img="b" url="2" title="2" nickname="2" tag="2" vid="2" star="2"/>
<video img="c" url="3" title="3" nickname="3" tag="3" vid="3" star="3"/>
<video title="d" src="2" img="1"/>
</videos>
//下面这一个文件是后改的可以修改xml <?php
$doc = new DOMDocument();
$doc->load('data.xml'); //查找 videos 节点
$root = $doc->getElementsByTagName('videos'); //第一个 videos 节点
$root = $root->item(0); //查找 videos 节点下的 video 节点
$userid = $root->getElementsByTagName('video'); //遍历所有 video 节点
foreach ($userid as $rootdata)
{
//遍历每一个 video 节点所有属性
foreach ($rootdata->attributes as $attrib)
{
$attribName = $attrib->nodeName; //nodeName为属性名称
$attribValue = $attrib->nodeValue; //nodeValue为属性内容 //查找属性名称为ip的节点内容
if ($attribName =='img')
{
//查找属性内容为ip的节点内容
if ($attribValue =='1')
{
//将属性为img,img内容为1的修改为image;
$rootdata->setAttribute('img','image');
$doc->save('data.xml');
}
}
}
} ?>=========================================================================
<?
$xmlDoc = new DOMDocument();
$xmlDoc->load("http://localhost/xml/xml.php");
$x=$xmlDoc->getElementsByTagName('name');
for ($i=0; $i<=$x->length-1; $i++){
if(strpos($x->item($i)->nodeValue,"fang")!==false){ //判断节点内容是否存在字符“fang”,可用于搜索
echo $x->item($i)->parentNode->childNodes->item(1)->nodeValue;
}
}
?>
PHP通过DOM操作XML的更多相关文章
- php中通过DOM操作XML
DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...
- php : DOM 操作 XML
DOM 操作 XML 基本用法 XML文件: person.XML <?xml version="1.0" encoding="utf-8" ?> ...
- Java用DOM操作xml
JAXP DOM方式解析XML文档实例增删改查package jiexi; import javax.xml.parsers.DocumentBuilder; import javax.xml.par ...
- java使用DOM操作XML
XML DOM简介 XML DOM 是用于获取.更改.添加或删除 XML 元素的标准. XML 文档中的每个成分都是一个节点. DOM 是这样规定的: 整个文档是一个文档节点 每个 XML 标签是一个 ...
- DOM操作XML文件
一.IE中的XML(IE低版本才支持) 在统一的正式规范出来以前,浏览器对于 XML 的解决方案各不相同.DOM2 级提出了动态创建 XML DOM 规范,DOM3 进一步增强了 XML DOM. 所 ...
- DOM 操作XML(CRUD)
<?xml version="1.0" encoding="UTF-8" standalone="no"?><书架> ...
- java DOM 操作xml
1 代码如下: package dom.pasing; import java.io.IOException; import java.io.StringWriter; import javax.xm ...
- ajax——dom对xml和html的操作
上篇文章说到了dom的基础,dom能够操作xml和html,这次主要写利用dom的api去如何去操作xml和html文档. dom操作xml dom操作xml文档之前必须把xml文档装载到xml do ...
- DOM【介绍、HTML中的DOM、XML中的DOM】
什么是DOM? DOM(Document Object Model)文档对象模型,是语言和平台的中立接口. 允许程序和脚本动态地访问和更新文档的内容. 为什么要使用DOM? Dom技术使得用户页面可以 ...
随机推荐
- 哪里获取ZBrush简体中文版?
ZBrush®精简版(ZBrush简体中文版)ZBrushCore发布已经有一段日子了,相信不少人早已迫不及待地开始尝试了,不知道你们的体验如何?毋庸置疑的是,ZBrushCore专为刚接触3D并希望 ...
- spring-session与redis实现session共享
一.准备 两个不同端口号的输出request.getLocalPort() + " ---> " + request.getSession(true).getId()的简单S ...
- Codeforces Round #493 (Div. 1) B. Roman Digits 打表找规律
题意: 我们在研究罗马数字.罗马数字只有4个字符,I,V,X,L分别代表1,5,10,100.一个罗马数字的值为该数字包含的字符代表数字的和,而与字符的顺序无关.例如XXXV=35,IXI=12. 现 ...
- Pyhton学习——Day11
# Python中的内部模块# 函数学习的意义:抽取重复代码# 模块:不用重复写,模块及py文件,提高了代码的可维护性,其次,编写代码不必从零开始,当一个模块编写完毕,不必再重复编写# import ...
- Sona && Little Elephant and Array && Little Elephant and Array && D-query && Powerful array && Fast Queries (莫队)
vjudge上莫队专题 真的是要吐槽自己(自己的莫队手残写了2个bug) s=sqrt(n) 是元素的个数而不是询问的个数(之所以是sqrt(n)使得左端点每个块左端点的范围嘴都是sqrt(n)) 在 ...
- [luogu2501 HAOI2006] 数字序列 (递推LIS)
题目描述 现在我们有一个长度为n的整数序列A.但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列.但是不希望改变过多的数,也不希望改变的幅度太大. 输入输出格式 输入格式: 第一行包含一个数 ...
- python的父类和子类中关于继承的不同版本的写法
Python 2.7中的继承 在Python 2.7中,继承语法稍有不同,ElectricCar 类的定义类似于下面这样: class Car(object): def __init__(self, ...
- myeclipse如何取消某一个文件的校验
- 《一个民企CEO的职场阳谋》–读书总结(上)
职场是一个战场,很多人几十年在这里战斗. 职场是一个熔炉,很多人大半生在这里修炼. 如果在办公室里得不到快乐,生活就不会快乐. 如果公司里头感觉不到幸福,人生就不会幸福.(以上四句来自老刘的博客) & ...
- Spring配置文件中指定init-method属性的作用
bean 配置文件属性 init-method 用于在bean初始化时指定执行方法,用来替代继承 InitializingBean接口.相关链接:https://www.cnblogs.com/Joe ...