我有以下XML。在这里,我想得到节点c的前一个兄弟,即使用java的
<root>
<a>
<b>
<c>
<d>
</a>
</root>
每当我尝试使用node.getPreviousSibling()方法获取节点时,我将节点视为#text而不是节点b。
对此非常感谢。
答案 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::*