我想看看它是否还有其他兄弟姐妹.
这是我尝试过的:
Node sibling = node.getNextSibling();
if(sibling == null)
return true;
else
return false;
但是,出于某种原因(可能是由于源XML中的标识或行空间),我没有得到预期的结果.
[也
node.getParentNode().getChildNodes().getLength()
给出的价值高于我的预期.]
我欢迎您提出改进此代码的建议.
编辑
如下所示,似乎空白节点阻碍了我计算兄弟姐妹的企图.
xml看起来像这样:
<a>
<b>
<c>I have this node:</c>
<c>I want to kNow how many of these there are.</c>
<c>This is another sibling.</c>
</b>
<b>
</b>
</a>
从我的节点(上面的第一个< c>< / c>)开始,我如何找出其他兄弟姐妹的数量?
解决方法:
当您从另一个节点获取子节点时,您将收到所有直接子节点.这将包括Element节点,Text节点和Comment节点.大多数情况下,您只关心Element节点.因此,您可以检查getChildNodes的结果,看看是否有ELEMENT_NODE.
public function isSingleChild(Node node) {
boolean singleChild = true;
NodeList siblings = node.getParentNode().getChildNodes();
for(int i = 0, int len = siblings.getLength(); i < len; i++) {
if(siblings.item(i).getNodeType() == Node.ELEMENT_NODE) {
singleChild = false;
break;
}
}
return singleChild;
}
只是看看每个节点类型是什么样的:
<div>
<!-- Comment Node -->
<p>Element node</p>
a text node
</div>
获取div的childNodes将返回3个节点,包含“Comment Node”的注释节点,“P”的Element节点和“text node”的Text节点.