PHP DomDocument xml解析器

时间:2011-09-15 09:15:00

标签: php xml domdocument

我有一个解析一些xml文本的php页面。该文本来自html文本字段中的用户输入。

每当节点之间存在任何空格时,Domdocument xml解析器无法正确解析文档。基本上它会识别第一个节点,但它找不到任何嵌套节点。

删除空格,没问题。

$xmldoc = new DOMDocument();
$xmldoc->loadXML($rawxml);

$top = $xmldoc->documentElement;
if(!$top) {echo "error: xml config is empty"; exit(-1);}
if($top->nodeName != "config") die("error: expect config tag as first element");


$nameNode = $top->childNodes->item(0);

//Fails here
if($nameNode->nodeName != "name") die("error: expect name tag following config tag");

作品

<config><name>sdf2</name></config>

不起作用

<config>   <name>sdf2</name></config>

1 个答案:

答案 0 :(得分:0)

这是预期的行为。当您使用DOM加载任何空格的格式化XML文档时,例如默认情况下,缩进,换行符和节点值将作为DOMText实例成为DOM的一部分。您可以通过执行

来禁用此功能
$xmldoc->preserveWhiteSpace = false;

在加载XML之前,然后将丢弃任何格式化空格。有关更详细的答案,请参阅