2011-09-21 163 views
0

我有下面的XML。在这里,我想节点c的前一个兄弟即b用javajava XML找到兄弟节点

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

每当我试图让使用node.getPreviousSibling()方法,我得到的节点#text而不是节点B的节点。

对此非常感谢。

+0

您可以添加您正在使用的Java代码的代码段来解析xml吗? – bittersweetryan

+0

这是因为在节点'c'和'b'之间有一个文本节点(包含所有空格)... – maerics

回答

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; 
    } 
+0

这对我有效,感谢您的帮助 –

1

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

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

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