微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我想看看它是否还有其他兄弟姐妹.

这是我尝试过的:

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节点.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。