好几天没有写文章了,最近一直在考驾照,还差一个科目四了,所以最近文章更新比较少。趁着放假赶紧更新几篇。今天分享一篇使用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();
?>