解析php DOMElement 操作xml 文档的实现代码
解析php DOMElement 操作xml 文档的实现代码
发布时间:2016-12-29 来源:查字典编辑
摘要:复制代码代码如下:/*孙悟空孙行者123

复制代码 代码如下:

/*<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<>

<?xml-stylesheet type="text/css" href="css.css"?>

<>

<>

<班级>

<学生 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教程学习
热门php教程学习
编程开发子分类