<?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);
return元素为null但它应该是2.0。
注意:它应该使用XPath 1.0
答案 0 :(得分:0)
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);
您可以在NamespaceContext上找到my blog的示例实现。