如何修复这样的XML bug

时间:2009-08-31 10:36:45

标签: php xml

我有这样的XML文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

我在我的php页面编码:

<? php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
{
   print $item->nodeName . " = " . $item->nodeValue . "<br />";
}
?> 

上面代码的输出是:

#text =
to = Tove
#text =
from = Jani
#text =
heading = Reminder
#text =
body = Don't forget me this weekend!
#text =

我知道,当XML生成时,它通常在节点之间包含空格。但是任何人都可以帮助我循环遍历节点之间的XML旁路空格元素的所有元素。我的意思是只遍历元素的所有真实元素。请帮助我。

3 个答案:

答案 0 :(得分:4)

试试这个

$xmlDoc = new DOMDocument();
$xmlDoc->preserveWhiteSpace = false; 
$xmlDoc->load("note.xml");

答案 1 :(得分:2)

如果你只是想迭代元素(并且没有像重新排序元素那样花哨的东西等等),我会选择simplexml - 扩展,这使得处理XML变得更加简单:

$xml = simplexml_load_file('note.xml');
foreach ($xml as $node) {
    echo $node->getName() . ' = ' . (string)$node . '<br />';
}

答案 2 :(得分:0)

无论你做什么,它都只是对症治疗。 XML文件首先不应包含那些换行符,因为结束&gt;之间的任何内容都是如此。和开放&lt;被视为文本元素。