您好,UncleToo欢迎您!  为了更好的浏览本站,请使用高版本浏览器
RSS  Tag     设为首页 | 加入收藏
 您所在的位置:首页 > PHP技术 > PHP基础

PHP教程 DOM解析器

作者:UncleToo  来源:原创  日期:2014-01-16 8:14:45
收藏  评论:( 0 )  阅读:788

DOM是一个基于树的解析器,用于在PHP中处理XML的API。在PHP 5之前,我们都是添加domxml扩展使用DOM解析器。从PHP 5开始,PHP为我们集成了libxml,并作为PHP内核的一部分,因此我们不需要安装任何形式的扩展即可使用DOM解析器。

DOM解析器特性

PHP的DOM解析器为我们提供了很多功能,在XML文档中为我们提供了如下的功能:

   1、DOM API包括基于数据的类作为节点。例如,DOMCharacterData,DOMComment类是用来表示字符数据节点,分别注释节点。

   2、DOMDocument类代表整个XML根节点。它包括很多普遍适用于所有节点的函数的列表:

        使用XML解析器加载XML文件或文档

        创建新节点、字符数据节点、PI节点

        添加属性节点

        访问XML节点的ID、名称和名称空间

        将XML文档保存到文件或变量中

        验证XML文档

   3、他提供了异常跟踪接口

   4、DOM API计算XPath表达式

   5、PHP的DOM解析器支持utf8字符编码


dom_import_simplexml()

除了上述特性,DOM解析器可以使用dom_import_simplexml()函数与SimpleXML解析器进行互操作。它需要SimpleXML对象作为参数,并返回DOM格式化的文档作为结果。

使用DOM解析器来解析XML示例

首先,我们应该使用DOM对象加载这个文件。使用这个对象,我们可以遍历XML节点的名称和值。

<?php
$xmlDocument = '<?xml version="1.0"?>
<sites>
<site>
<name>UncleToo中文网</name>
<type>PHP中文门户</type>
<add>http://www.uncletoo.com</>
</site>
<site>
<name>PHPChina</name>
<type>PHP培训</type>
<add>http://www.phpchina.com</>
</site>
</sites>'
?>

这段PHP代码使用DOM添加新元素到目标XML。

<?php
$dom = new DOMDocument();
$dom->loadXML($xmlDocument);
$target = $dom->getElementsByTagName("sites")->item(0);
$new_node = $dom->createElement("site");
$child1 = $dom->createElement("name","百度");
$child2 = $dom->createElement("type","搜索引擎");
$child2 = $dom->createElement("add","http://www.baidu.com");
$new_node->appendChild($child1);
$new_node->appendChild($child2);
$target->appendChild($new_node);
$elements = $dom->documentElement;
if (!is_null($elements)) {
foreach ($elements->childNodes AS $element) {
echo "<br/><". $element->nodeName. ">";
$nodes = $element->childNodes;
if (!is_null($nodes)) {
foreach ($nodes as $node) {
echo $node->nodeName . ":" . $node->nodeValue. "<br/>";
}}}}
?>

输出:

<#text>

#text:

name:UncleToo中文网

#text:

type:PHP中文门户

#text:

add:http://www.uncletoo.com

#text:


<#text>

#text:

name:PHPChina

#text:

type:PHP培训

#text:

http://www.phpchina.com

#text:




除非特别声明,本站所有PHP教程及其他教程/文章均为原创、翻译或网友投稿,版权均归UncleToo中文网所有, 转载请注明作者及出处。
原文网址:http://www.uncletoo.com/html/base/788.html
读完这篇文章后,你是否有所收获? 分享是一种生活的信念!
  • 0
  • 0
我来说两句
更多>>网友评论