2011-09-21 149 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::*