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 使用指定的样式表将节点及其后代转换
1 <?php 2 //读取xml 3 $dom=new DOMDocument(‘1.0‘); 4 $dom->load(‘data.xml‘); 5 $em=$dom->getElementsByTagName(‘videos‘);//最外层节点 6 $em=$em->item(0); 7 $items=$em->getElementsByTagName(‘video‘);//节点 8 //如果不用读取直接添加的话把下面这一段去掉即可 9 foreach($items as $a){ 10 foreach($a->attributes as $b){//$b->nodeValue;节点属性的值$b->nodeName;节点属性的名称 11 echo $b->nodeName; 12 echo ":"; 13 echo $b->nodeValue; 14 echo "<br/>"; 15 } 16 } 17 //下面是往xml写入一行新的 18 $t=$dom->createElement(‘video‘);//<video 19 $t->setAttribute(‘title‘,‘1‘);//<video name="data" 20 $t->setAttribute(‘src‘,‘2‘);//<video name="data" src="2" 21 $t->setAttribute(‘img‘,‘1‘);//<video name="data" img="1" 22 $em->appendChild($t);//<video name="data" img="1"/> 23 $dom->save(‘data.xml‘); 24 ?> 25 26 当时的xml文档: 27 28 <?xml version="1.0"?> 29 <videos> 30 <video img="a" url="1" title="1" nickname="1" tag="1" vid="1" star="1"/> 31 <video img="b" url="2" title="2" nickname="2" tag="2" vid="2" star="2"/> 32 <video img="c" url="3" title="3" nickname="3" tag="3" vid="3" star="3"/> 33 <video title="d" src="2" img="1"/> 34 </videos> 35 //下面这一个文件是后改的可以修改xml 36 37 <?php 38 $doc = new DOMDocument(); 39 $doc->load(‘data.xml‘); 40 41 //查找 videos 节点 42 $root = $doc->getElementsByTagName(‘videos‘); 43 44 //第一个 videos 节点 45 $root = $root->item(0); 46 47 //查找 videos 节点下的 video 节点 48 $userid = $root->getElementsByTagName(‘video‘); 49 50 //遍历所有 video 节点 51 foreach ($userid as $rootdata) 52 { 53 //遍历每一个 video 节点所有属性 54 foreach ($rootdata->attributes as $attrib) 55 { 56 $attribName = $attrib->nodeName; //nodeName为属性名称 57 $attribValue = $attrib->nodeValue; //nodeValue为属性内容 58 59 //查找属性名称为ip的节点内容 60 if ($attribName ==‘img‘) 61 { 62 //查找属性内容为ip的节点内容 63 if ($attribValue ==‘1‘) 64 { 65 //将属性为img,img内容为1的修改为image; 66 $rootdata->setAttribute(‘img‘,‘image‘); 67 $doc->save(‘data.xml‘); 68 } 69 } 70 } 71 } 72 73 ?>
=========================================================================
1 <? 2 $xmlDoc = new DOMDocument(); 3 $xmlDoc->load("http://localhost/xml/xml.php"); 4 $x=$xmlDoc->getElementsByTagName(‘name‘); 5 for ($i=0; $i<=$x->length-1; $i++){ 6 if(strpos($x->item($i)->nodeValue,"fang")!==false){ //判断节点内容是否存在字符“fang”,可用于搜索 7 echo $x->item($i)->parentNode->childNodes->item(1)->nodeValue; 8 } 9 } 10 ?>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。