gpt4 book ai didi

java - 如何检查节点是否没有兄弟节点?

转载 作者:数据小太阳 更新时间:2023-10-29 02:23:09 26 4
gpt4 key购买 nike

我有一个 org.w3c.dom.Node 对象。

我想看看它还有没有其他 sibling 。

这是我尝试过的:

Node sibling = node.getNextSibling();
if(sibling == null)
return true;
else
return false;

但是,出于某种原因(可能是由于源 XML 中的标识或行空格),我没有得到预期的结果。

[还有

 node.getParentNode().getChildNodes().getLength() 

给出的值高于我的预期。]

我欢迎您提出改进此代码的建议。

编辑

如下所示,空白节点似乎阻碍了我对 sibling 进行计数的尝试。

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>

从我的节点(上面的第一个 )开始,我如何找出其他 sibling 的数量?

最佳答案

当您从另一个节点获取子节点时,您将收到所有直接子节点。这将包括元素节点、文本节点和注释节点。大多数情况下,您只关心元素节点。因此,您可以检查 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节点,和一个“a text node”的Text节点。

关于java - 如何检查节点是否没有兄弟节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1702972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com