Java XML-从特定节点提取值

Java XML-从特定节点提取值,java,xml,dom,xpath,Java,Xml,Dom,Xpath,我正在努力从XML文档中的特定节点提取值。我正在使用w3c.DOM,因为我已经找到了很多关于它的教程,但是现在我找不到任何适合这个任务的好教程——我不得不使用XPath来完成这个任务 我始终知道指向某个节点的确切路径(并将其作为字符串传递,例如:“Car/Wheels/Wheel[@Index='x´]/”),我需要从该节点提取一个值(字符串)并返回它(稍后我将字符串转换为其他方法中的双精度和整数)。变量myDoc是文档myDoc 如何获得该值 private String xPathValue

我正在努力从XML文档中的特定节点提取值。我正在使用w3c.DOM,因为我已经找到了很多关于它的教程,但是现在我找不到任何适合这个任务的好教程——我不得不使用XPath来完成这个任务

我始终知道指向某个节点的确切路径(并将其作为字符串传递,例如:
“Car/Wheels/Wheel[@Index='x´]/”
),我需要从该节点提取一个值(字符串)并返回它(稍后我将字符串转换为其他方法中的双精度和整数)。变量myDoc是文档myDoc

如何获得该值

private String xPathValue(String path){

XPath myPath = XPathFactory.newInstance().newXPath();
XPathExpression expr =  xpath.compile(path);  
String result = (String)expr.evaluate(myDoc);  

return result;
}
但是这不起作用,我不想创建任何节点列表,因为我知道确切的路径。我正在寻找类似于
Node.getTextContent()的东西

您有两个选项

1) 更改xPath以返回节点的值,而不是节点本身

使用表达式:
Car/Wheels/Wheel[@Index='x´]/text()


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();
}
你有两个选择

1) 更改xPath以返回节点的值,而不是节点本身

使用表达式:
Car/Wheels/Wheel[@Index='x´]/text()


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

您的XML文档在哪里?根据您的XPath表达式(您实际选择的是什么),您将以不同的方式处理结果(在不同的对象中,例如
NodeList
Node
String
。显示您的实际代码和XML。您的XML文档在哪里?取决于您的XPath表达式(您实际选择的是什么)您将以不同的方式处理结果(在不同的对象中,例如
节点列表
节点
字符串
。显示您的实际代码和XML。哇,这个解决方案确实有效,非常感谢。这是一个非常简单的技巧。哇,这个解决方案确实有效,非常感谢。这是一个非常简单的技巧。