我有下面的XML。在這裏,我想節點c的前一個兄弟即b用javajava XML找到兄弟節點
<root>
<a>
<b>
<c>
<d>
</a>
</root>
每當我試圖讓使用node.getPreviousSibling()方法,我得到的節點#text而不是節點B的節點。
對此非常感謝。
我有下面的XML。在這裏,我想節點c的前一個兄弟即b用javajava XML找到兄弟節點
<root>
<a>
<b>
<c>
<d>
</a>
</root>
每當我試圖讓使用node.getPreviousSibling()方法,我得到的節點#text而不是節點B的節點。
對此非常感謝。
你需要做這樣的事情: (你得到#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;
}
這對我有效,感謝您的幫助 –
你可以使用一個循環...
while (node!= null && !(node instanceOf Element)) {
node = node.getPreviousSibling();
}
您還可以使用XPath表達式,./previous-sibling::*
您可以添加您正在使用的Java代碼的代碼段來解析xml嗎? – bittersweetryan
這是因爲在節點'c'和'b'之間有一個文本節點(包含所有空格)... – maerics