DomNode获得项目的价值

时间:2013-10-04 13:42:54

标签: php xml

您好我是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

1 个答案:

答案 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);