我有下面的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