Php DomNode获取项的值
您好,我是domnode的新手,我正在尝试检查加载ok的xml树中的值。 这是我的代码,但我不明白为什么不工作Php DomNode获取项的值,php,xml,Php,Xml,您好,我是domnode的新手,我正在尝试检查加载ok的xml树中的值。 这是我的代码,但我不明白为什么不工作 private function createCSV($xml, $f) { foreach ($xml->getElementsByTagName('*') as $item) { $hasChild = $item->hasChildNodes() ? true : false; if(!$hasChild)
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
不会在浏览器中打印任何内容。
我看了文件,但没有发现任何错误
另外,$item->tagname
也不起作用
更新
使用时:echo$item->ownerDocument->saveHTML($item)代码>
我得到了列出的标记,但我没有像javascript中的innerHTML那样得到内部(标记之间)的数据
更新
示例xml数据:文本节点也被视为子节点,但您只迭代元素节点(按标记名获取元素)。正因为如此,你几乎永远不会进入第二种状态
试试这个:
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);
仍然printf只打印出“Value:”您能发布一些示例XML数据吗?似乎对我有用-。我使用trim()避免打印空文本节点(空白)。但是我认为Xpath和normalize-space()将是处理这些情况的更好的方法谢谢你的时间它似乎起作用了是的,我仍然无法理解错误是什么:)在这种类似的情况下,如何打印标签名?为了创建关联数组?