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

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念