内建的DOM解析器使在
PHP中处理XML文档成为可能
。 什么是DOM?
W3CDOM提供了针对HTML和XML文档的标准对象集
,以及用于访问和操作这些文档的标准接口
。 W3CDOM被分为不同的部分(Core,XML和HTML)和不同的级别(DOMLevel1/2/3):
CoreDOM-为任何结构化文档定义标准的对象集
XMLDOM-为XML文档定义标准的对象集
HTMLDOM-为HTML文档定义标准的对象集
XML解析
如需读取和更新-创建创建并处理-一个XML文档
,您需要XML解析器。
有两种基本的XML解析器类型:
基于树的解析器:这种解析器把XML文档转换为树型结构。它分析整篇文档,并提供了API来访问树种的元素,例如文档对象模型(DOM)。
基于事件的解析器:将XML文档视为一系列的事件。当某个具体的事件发生时,解析器会调用函数来处理。
DOM解析器是基于树的解析器。
请看下面的XML文档片段:
<?xmlversion="1.0"encoding="ISO-8859-1"?>
<from>John</from>XMLDOM把XML视为一个树形结构:
Level1:XML文档
Level2:根元素:<from>
Level3:文本元素:"John"
安装
DOMXML解析器函数是
PHP核心的组成部分。无需安装就可以使用这些函数。
XML文件
将在我们的例子中使用下面的XML文件:
<?xmlversion="1.0"encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don'tforgetthemeeting!</body>
</note>加载和输出XML
我们需要初始化XML解析器,加载XML,并把它输出:
例子
<?php
$xmlDoc=newDOMDocument();
$xmlDoc->load("note.xml");
print$xmlDoc->saveXML();
?>以上代码的输出:
GeorgeJohnReminderDon'tforgetthemeeting!假如您在浏览器窗口中查看源代码,会看到下面这些HTML:
<?xmlversion="1.0"encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don'tforgetthemeeting!</body>
</note>上面的例子创建了一个DOMDocument-Object,并把"note.xml"中的XML载入这个文档对象中。
saveXML()函数把内部XML文档放入一个字符串,这样我们就可以输出它。
循环XML
我们要初始化XML解析器,加载XML,并循环<note>元素的所有元素:
例子
<?php
$xmlDoc=newDOMDocument();
$xmlDoc->load("note.xml");
$x=$xmlDoc->documentElement;
foreach($x->childNodesAS$item)
{
print$item->nodeName."=".$item->nodeValue."<br/>";
}
?>以上代码的输出:
#text=
to=George
#text=
from=John
#text=
heading=Reminder
#text=
body=Don'tforgetthemeeting!
#text=在上面的例子中,您看到了每个元素之间存在空的文本节点。
当XML生成时,它通常会在节点之间包含空白。XMLDOM解析器把它们当作普通的元素,如果您不注意它们,有时会产生问题。