我有一个xml文档,我试图使用DOM解析器进行解析。
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<trajectorys version="1.4.1.1">
<trajectory uid="a" uidWell="b" uidWellbore="c">
<nameWell>xval</nameWell>
<nameWellbore>yval</nameWellbore>
<trajectoryStation uid="0.00">
<dTimStn>2017-02-04T10:51:20.000-06:00</dTimStn>
<typeTrajStation>unknown</typeTrajStation>
</trajectoryStation>
<commonData>
<dTimCreation>2017-02-20</dTimCreation>
<dTimLastChange>2017-02-20</dTimLastChange>
</commonData>
</trajectory>
</trajectorys>
我正在尝试使用Node.hasChildNodes()查找子节点。对于 nameWell 和 nameWellbore 节点,它返回 True ,即使它没有子节点,而 trajectoryStation 和 commonData 返回 False 。 我不明白为什么hasChildNodes方法会出现这种反向行为。
答案 0 :(得分:0)
您提到的所有元素节点都有子节点,并且该方法对所有节点都返回true。您确定要测试正确的节点吗?
另请注意,#hasChildNodes()
包括所有类型的节点,元素,文本,注释等。
更新
为了给你一个想法,这就是我通常在DOM文档中收集子元素的方式:
private List<Element> childElementsOf(Element parent) {
List<Element> result = new LinkedList<>();
Node node = parent.getFirstChild();
while(node != null) {
if (node.getNodeType() == Node.ELEMENT_NODE) {
result.add((Element) node);
}
node = node.getNextSibling();
}
return result;
}