【问题标题】:How to parse this xml using XPath in java?如何在java中使用XPath解析这个xml?
【发布时间】:2013-03-22 08:44:29
【问题描述】:

<?xml version="1.0" encoding="utf-8"?> <double xmlns="http://www.somewebsite.com/">2.0</double>

我在使用 XPath 1.0 解析它时遇到了一些麻烦。

这就是我的工作:

XPath xpath = XPath.newInstance("/double"); Element returnElement = (Element) xpath.selectSingleNode(doc);

返回元素为 null 但它应该是 2.0。

注意:它应该使用 XPath 1.0

【问题讨论】:

标签: java xml xpath xml-namespaces


【解决方案1】:

double 元素位于 http://www.somewebsite.com/ 命名空间中。将命名空间映射到前缀(例如foo)并使用限定表达式(例如/foo:double)进行解析。

使用标准 API:

String xml = "<double xmlns='http://www.somewebsite.com/'>2.0</double>";
Reader reader = new StringReader(xml);
XPath xpath = XPathFactory.newInstance()
                          .newXPath();
NamespaceContext context = new NamespaceContextMap("foo", "http://www.somewebsite.com/");
xpath.setNamespaceContext(context);
String value = xpath.evaluate("/foo:double", new InputSource(reader));
System.out.println(value);

您可以在my blog 上找到NamespaceContext 的示例实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    相关资源
    最近更新 更多