DOM方式操作XML

好几天没有写文章了,最近一直在考驾照,还差一个科目四了,所以最近文章更新比较少。趁着放假赶紧更新几篇。今天分享一篇使用DOM 方式操作XML。


1、生成XML:

<?php
/**
 * DOM创建XML文件
 * @author webbc
 */

/**
 * 创建示例
 * <?xml version="1.0" encoding="utf-8"?>
 * <appstore>
 *    <goods goods_id="g001">
 *      <name>天龙八部</name>
 *      <intro><![DATA[这本书真好]]></intro>
 *    </goods>
 * </appstore>
 */

//1、创建dom文档对象
$dom = new DOMDocument('1.0','utf-8');
//2、创建天龙八部文本对象
$tl = $dom->createTextNode('天龙八部');
//3、创建name节点对象
$name = $dom->createElement('name');
//4、把天龙文本对象添加到name节点对象中
$name->appendChild($tl);
//5、创建CDATA节点对象
$cdata = $dom->createCDATASection('这本书真好');
//6、创建intro节点对象
$intro = $dom->createElement('intro');
//7、把cdata对象添加到intro节点中
$intro->appendChild($cdata);
// 8、创建goods节点对象
$goods = $dom->createElement('goods');
//9、把name和Intro两个节点对象分别添加到goods节点对象中
$goods->appendChild($name);
$goods->appendChild($intro);
//10、创建goods_id属性节点对象
$goods_id = $dom->createAttribute('goods_id');
$goods_id->value = 'g001';
//11、把属性节点对象添加到goods节点对象中
$goods->appendChild($goods_id);
//12、创建appstore节点对象
$appstore = $dom->createElement('appstore');
//13、把goods对象添加到appstore对象中
$appstore->appendChild($goods);
//14、把appstore对象最后添加到文档对象中
$dom->appendChild($appstore);

//输出到浏览器
header("Content-type:text/xml;charset:utf-8");
echo $dom->saveXML();

//保存成文件
//$dom->save('./05.xml');
?>

结果:
这里写图片描述

2、解析XML

这里写图片描述

题:找出“天龙八部”和“倚天屠龙剑”文本内容

<meta charset="utf-8"/>
<?php
/**
 * dom解析xml
 * @author webbc
 */
//1、创建dom文档对象
$dom = new DOMDocument('1.0','utf-8');
//2、将xml内容加载到该对象中
$dom->load('./04.xml');
//3、找出title节点,得到节点列表对象
$titleList = $dom->getElementsByTagName("title");
//4、然后根据节点列表对象的item方法来获取节点对象
$title0 = $titleList->item(0);
//5、找出该title节点的子节点,得到节点列表对象
$childList = $title0->childNodes;
//6、然后根据节点列表对象的item方法来获取节点对象,这里获取的是文本节点对象
echo $childList->item(0)->wholeText;//找出“天龙八部”
echo "<br/>";
echo $dom->getElementsByTagName("title")->item(1)->childNodes->item(0)->wholeText;//找出“倚天屠龙剑”
echo "<br/>";
print_r($dom->getElementsByTagName("title")->item(1)->nodeValue);//找出“倚天屠龙剑”
?>

结果:
这里写图片描述

3、XML节点的删与改

<?php
/**
 * XML节点的删与改
 * @author webbc
 */
//删除“天龙八部”节点,只能父节点删除自身的子节点
$dom = new DomDocument('1.0','utf-8');
$dom->load('./04.xml');
$bookList = $dom->getElementsByTagName('book');
$bookList->item(0)->parentNode->removeChild($bookList->item(0));
header('Content-type:text/xml;charset=utf-8');
// echo $dom->saveXML();
//修改节点,只能采取替换节点的方式来修改节点,只能父节点来替换自身的子节点,把“倚天屠龙记”文本节点替换成“鹿鼎记”文本节点
$title = $dom->getElementsByTagName('title')->item(0);
$tl = $dom->createTextNode('鹿鼎记');
$title->replaceChild($tl,$title->firstChild);
header('Content-type:text/xml;charset=utf-8');
echo $dom->saveXML();
?>

这里写图片描述

原文地址:https://www.cnblogs.com/cnsec/p/13407071.html