我有一个解析一些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>
答案 0 :(得分:0)
这是预期的行为。当您使用DOM加载任何空格的格式化XML文档时,例如默认情况下,缩进,换行符和节点值将作为DOMText实例成为DOM的一部分。您可以通过执行
来禁用此功能$xmldoc->preserveWhiteSpace = false;
在加载XML之前,然后将丢弃任何格式化空格。有关更详细的答案,请参阅