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;
- }
- }
- ?>