php DOMElement 操作xml 文档的解决办法
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
代码如下
这篇文章主要为大家详细介绍了php DOMElement 操作xml 文档的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
代码如下:
/*<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- css的样式定义,不加点。如:name{color:red;} -->
<?xml-stylesheet type="text/css" href="css.css"?>
<!-- 引入dtd文档定义文件 (根元素:班级)<!DOCTYPE 班级 SYSTEM "class.dtd" /> -->
<!-- <!DOCTYPE 班级[
<!ELEMENT 班级 (学生+)>
<!ELEMENT 学生 (名字,年龄,介绍)>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 介绍 (#PCDATA)>
] /> -->
<班级>
<学生 number="101">
<名字>孙悟空</名字>
<名字>孙行者</名字>
<年龄>123</年龄>
<介绍><![CDATA[&*$%特殊字串^&#$&]]></介绍>
</学生>
<学生 number="10"2"><名字>白骨精</名字><年龄>140</年龄><介绍>介绍内容</介绍></学生></班级>*/$xmldoc = new DOMDocument('1.0', 'UTF-8');$xmldoc->load('datas.xml');
$itemsNodeList = $xmldoc->getElementsbyTagName('学生');$itemElement = $itemsNodeList->item(0);//得到第一个完整的学生信息节点$itemChildsNodeList = $itemElement->getElementsbyTagName('名字');//得到子节点“名字”,也许有多个名字$itemChildNode = $itemChildsNodeList->item(0);//得到第一个名字节点echo $itemChildNode->nodeValue;//输出节点值
//封装成函数$nodeArr = array('名字', '年龄', '介绍');function getNodeVal($xmldoc, $itemsName, $nodeArr){ $items = $xmldoc->getElementsByTagName($itemsName); for($i=0; $i < $items->length; $i++){ $item = $items->item($i); foreach($nodeArr as $node){ $data[$i][] = $item->getElementsByTagName($node)->item(0)->nodeValue; } } return $data;}
$data = getNodeVal($xmldoc, '学生', $nodeArr);print_r($data);
代码如下:
//添加节点
$xmldoc = new DOMDocument('1.0', 'UTF-8');
$xmldoc->load('datas.xml');
$items = $xmldoc->getElementsByTagName('班级')->item(0);//根节点
$student = $xmldoc->createElement('学生');//创建一个新的学生节点
$stu_name = $xmldoc->createElement('名字','张三');
$stu_age = $xmldoc->createElement('年龄','15');
$stu_intro = $xmldoc->createElement('介绍','动手能力强且成绩稳定');
$items->appendChild($student);
$student->appendChild($stu_name);
$student->appendChild($stu_age);
$student->appendChild($stu_intro);
$bytes = $xmldoc->save('datas.xml');
echo ($bytes)? "写入了: $bytes 字节" : '保存失败';
//删除节点$xmldoc = new DOMDocument('1.0', 'UTF-8');$xmldoc->load('datas.xml');$student = $xmldoc->getElementsByTagName('学生')->item(2);//直接找到要删除的节点$student->parentNode->removeChild($student);//父节点的删除方法$xmldoc->save('datas.xml');
//修改节点值$student = $xmldoc->getElementsByTagName('学生')->item(2);$student->getElementsByTagName('年龄')->item(0)->nodeValue += 10;$student->setAttribute('id', '110');$xmldoc->save('datas.xml');
//应用 Xpath 查找节点
$xml = new DOMDocument('1.0', 'UTF-8');$xml->load('dat.xml');$xpath = new DOMXPath($xml);$nodeList = $xpath->query('/aaa/bbb/ddd/fff');echo $nodeList->item(0)->nodeValue;
//SimpleXML 类操作 xml/*<?xml version="1.0" encoding="UTF-8"?><books><book house="清华出版"><code>1001</code><price>200元</price><author>大明</author><title>天龙八部</title></book><book house="北大出版"><code>1002</code><price>321元</price><author>张三</author><title>笑傲江湖</title></book><book house="人 民出版"><code>1004</code><price>182元</price><author>李四</author><title>读者</title></book></books>*/$xml = simplexml_load_file('books.xml');$books = $xml->book;echo $books[1]->title . $books[1]['house'];//直接指向第二本书foreach($xml as $item){ echo $item->title,' ',$item['house'],'<br/>';}
注:关于php DOMElement 操作xml 文档的简单示例的内容就先介绍到这里,更多相关文章的可以留意