XML - 从特定节点提取值

时间:2014-06-16 21:20:10

标签: java xml dom xpath

我正在努力从我的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();

这样的东西

1 个答案:

答案 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();
}