java XML找到兄弟节点

时间:2011-09-21 16:24:45

标签: java xml

我有以下XML。在这里,我想得到节点c的前一个兄弟,即使用java的

<root>
 <a>
   <b>
   <c>
   <d>
 </a>
</root>

每当我尝试使用node.getPreviousSibling()方法获取节点时,我将节点视为#text而不是节点b。

对此非常感谢。

2 个答案:

答案 0 :(得分:2)

你需要做这样的事情: (您获得的#text是节点中的实际文本)

  public static Element getPreviousSiblingElement(Node node) {
      Node prevSibling = node.getPreviousSibling();
      while (prevSibling != null) {
          if (prevSibling.getNodeType() == Node.ELEMENT_NODE) {
              return (Element) prevSibling;
          }
          prevSibling = prevSibling.getPreviousSibling();
      }

      return null;  
  } 

答案 1 :(得分:1)

你可以使用循环......

while (node!= null && !(node instanceOf Element)) {
    node = node.getPreviousSibling();
}

您还可以使用XPath表达式./previous-sibling::*