0

<?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 を使用する必要があります

4

1 に答える 1

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のサンプル実装を見つけることができます。

于 2013-03-22T10:46:31.320 に答える