PHP通过DOMDocument操作解析xml
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言
2.xml和html的区别
a.可扩展性:xml可以自己定义新的标记,而html都是已规定的标记
b.数据和显示:xml数据和显示是分离的,html是整合在一起
c.侧重点:xml用来描述数据结构,html用来如何表现数据(各种规定的样式和标签)
d.语法:xml严格要求嵌套和配对,html不要求
3.xml主要是为了传输数据,而不是为了显示数据
4.语法规范:
a.任何起始标签都必须有一个结束标签,即配对闭合
<root></root>
b.标签不能互相嵌套
错误:<root><a></root></a>
正确:<root><a></a></root>
c.属性必须有值,且属性值必须用引号包含起来
如:<root><a attr=‘wyz‘></a></root>
d.特殊字符要用实体符号来替换
如:> 用 >;‘’用"
注:如果有大段文本包含特殊字符,可以用CDATA(微信开发xml就有这个东东)来存放
XML文件
<?xml version="1.0" encoding="UTF-8"?> <books> <book> <name>php高级编程</name> <price>12</price> </book> <book> <name>php低级编程</name> <price>11</price> </book> </books>
DOM解析XML
$dom = new DOMDocument('1.0', 'utf-8'); //创建DOM解析对象 $dom->load('book.xml'); //载入解析文档文件 $books = $dom->getElementsByTagName('book'); //得到所有书本的DOMNodeList对象列表 //获取节点内容 echo '有几本书:'.$books->length."<br/>"; foreach ($books as $book) { $bookname = $book->getElementsByTagName('name'); //得到书本的名称DOMNodeList对象列表 $bookprice = $book->childNodes->item(3); //得到书本的价格DOMElement对象,childNodes包含换行节点 echo 'bookname:'.$bookname->item(0)->nodeValue."<br/>"; echo 'bookprice:'.$bookprice->nodeValue.'<br/>'; // $bookprice->nodeValue = 15; //修改节点内容 } //添加节点内容 $cbook = $dom->createElement('book'); $cbookname = $dom->createElement('name'); $cbookname_text = $dom->createTextNode('php中级编程'); $cbookname->appendChild($cbookname_text); $cbook->appendChild($cbookname); $dom->getElementsByTagName('books')->item(0)->appendChild($cbook); //删除节点内容 $book3 = $dom->getElementsByTagName('book')->item(2); //获取对象DOMElement对象 $book3->parentNode->removeChild($book3); //根据父亲节点对象移除获取的子DOMElement对象 $dom->save('book.xml');
注:php还可以通过SimpleXMLElement和DOMXPath解析。XPath可以快速读取节点文本数据,大数据读取可以考虑。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。