我正在努力从我的XML文档中的特定节点中提取值。我使用w3c.DOM,因为我已经找到了很多教程,但现在我找不到任何好的任务 - 我不得不使用XPath来完成这项任务。
我总是知道确切的路径(并将其作为字符串传递,例如:"Car/Wheels/Wheel[@Index=´x´]/"
)通向一个节点,我需要从中提取一个值(一个字符串)并返回它(我将字符串转换为之后的其他方法中的双精度和整数)。变量myDoc是Document myDoc。
我如何获得此值?
private String xPathValue(String path){
XPath myPath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile(path);
String result = (String)expr.evaluate(myDoc);
return result;
}
然而,这不起作用,我不想创建任何NodeList,因为我知道确切的路径。我正在寻找像Node.getTextContent();
答案 0 :(得分:4)
您有2个选项
1)改变xPath以返回节点的值而不是节点本身
使用表达式:Car/Wheels/Wheel[@Index=´x´]/text()
private String xPathValue(String path) {
XPath myPath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile(path);
String result = (String)expr.evaluate(myDoc, XPathConstants.STRING);
return result;
}
2)使用相同的xpath查询但返回节点类型
使用表达式:Car/Wheels/Wheel[@Index=´x´]
private String xPathValue(String path) {
XPath myPath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile(path);
Node result = (Node)expr.evaluate(myDoc, XPathConstants.NODE);
return result.getTextContent();
}