我有一个这种格式的XML文件:
<object>
<origin>1:1:1</origin>
<normal>2:2:2</normal>
<leafs>
<object>
<origin>1:1:1</origin>
<normal>3:3:3</normal>
<leafs>none</leafs>
</object>
</leafs>
</object>
如何在树的第二层检索元素<leafs>
的值“none”?我用过这个
XPathExpression expLeafs = xpath.compile("*[name()='leafs']");
Object resLeafs = expLeafs.evaluate(node, XPathConstants.NODESET);
NodeList leafsList = (NodeList) resLeafs;
if (!leafsList.item(0).getFirstChild().getNodeValue().equals("none"))
more code...
但它不起作用,因为有一些空文本节点bofore和“none”之后。有没有办法处理它像xpath.compile("*[value()='none']")
?
答案 0 :(得分:3)
我刚刚使用您的XML文件和
运行了一个简单的测试程序expr = xpath.compile("/object/leafs/object/leafs/text()");
并获得所需的“无”结果。如果您有其他要求,则必须编辑您的问题。
答案 1 :(得分:1)
在检查代码行@Lord Torgamus后,我设法解析了我需要的文档:
XPathExpression expLeafs = xpath.compile("*[name()='leafs']");
Object resLeafs = expLeafs.evaluate(node, XPathConstants.NODESET);
NodeList leafsList = (NodeList) resLeafs;
Node nd = leafsList.item(0);
XPathExpression expr = xpath.compile("text()");
Object resultObj = expr.evaluate(nd, XPathConstants.NODE);
String str = expr.evaluate(nd).trim();
System.out.println(str);
,输出为“none”,没有其他空文本节点。