您好我是domnode的新手,我正在尝试检查加载好的xml树中的值。 这是我的代码,但我不明白为什么不工作。
private function createCSV($xml, $f)
{
foreach ($xml->getElementsByTagName('*') as $item)
{
$hasChild = $item->hasChildNodes() ? true : false;
if(!$hasChild)
{
//echo 'Doesn\'t have children';
echo 'Value: ' . $item->nodeValue;
}
else
{
//echo 'Has children';
$this->createCSV($item, $f);
}
}
}
$item->nodeValue
不会向浏览器打印任何内容。
我阅读了文档但我看不出任何错误。
PS。 $item->tagname
也无效。
更新
使用此:echo $item->ownerDocument->saveHTML($item);
我得到了标签,但我没有得到javascript中的innerHTML内部(标签之间)的数据。
更新
示例xml数据:http://pastebin.com/dkuUUC0Q
答案 0 :(得分:0)
文本节点也被视为子节点,但您只是迭代元素节点(get Elements ByTagName)。因此,你几乎从未进入第二个条件。
试试这个:
if(!$xml->hasChildNodes()){
printf('Value: %s', $xml->nodeValue);
return;
}
foreach($xml->childNodes as $item)
$this->createCSV($item, $f);
XPath版本:
$xpath = new DOMXPath($xml);
$text = $xpath->query('//text()[normalize-space()]');
foreach($text as $node)
printf('Value: %s', $node->nodeValue);