【问题标题】:XML - extracting value from specific nodeXML - 从特定节点中提取值
【发布时间】:2014-08-06 19:01:39
【问题描述】:

我正在努力从我的 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,因为我知道确切的路径。我正在寻找类似 @​​987654323@

的东西

【问题讨论】:

  • 您的 XML 文档在哪里?根据您的 XPath 表达式(您实际选择什么),您会以不同的方式处理结果(在不同的对象中,例如 NodeList、Node、String。显示您的实际代码和您的 XML。

标签: java xml dom xpath


【解决方案1】:

你有两个选择

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

【讨论】:

  • 哇,这个解决方案确实有效,非常感谢。这是一个不错的简单技巧。
猜你喜欢
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多