【发布时间】:2020-06-21 13:06:07
【问题描述】:
如何只获取没有文本节点的子节点? 我有以下文件:
<Sys>
<Const>
<C1>A</C1>
<C2>B</C2>
<C3>C</C3>
</Const>
</Sys>
得到“Const”的孩子我得到6个元素,
<?php
$doc = new DOMDocument();
$doc->load($file_path);
$constants = $doc->getElementsByTagName('Const')->item(0);
foreach ($constants->childNodes as $const) {
echo $const->nodeName . ': ' . $const->nodeValue . '<br />';
}
?>
哪个打印:
#text:
C1: A
v#text:
C2: B
#text:
C3: C
如何获取唯一的 C1、C2 和 C3 节点,不包括文本节点?
【问题讨论】:
-
你只需要 C1 的值吗?
-
xpath或查看nodeType。 -
如果您正在处理数据 XML 文件,您可能会发现使用 SimpleXML 更容易,因为它将排除 DOM 保留的许多额外内容。
-
感谢您的回答,我正在使用 DOM 来解决向后兼容性问题。 libxml 模块比 SimpleXml 更容易安装。如果您有不同的证据,我很乐意知道。