Java/XPath と Namepsaces のトピックについてかなりの議論を見てきましたが、これらの質問に対する答えが私の問題に役立つかどうかはわかりません。
一部の XML を取得するプログラムがあります。事前に形式はわかりませんが、名前空間が含まれている可能性があります。ユーザーは、XML から特定のデータを抽出するために使用される xpath 式を指定できます。コードは汎用的です。事前に XML の形式がわからないため、名前空間などでコンパイルすることはできません。
したがって、XML は次のようになります。
<ns1:item id='myroot' xmlns:ns1='http://www.myplace.com/place'>
<ns1:category id='cat1'>
<ns1:item id='item1'>
<ns1:category id='cat2'></ns1:category>
</ns1:item>
</ns1:category>
</ns1:item>
ユーザーが入力する xpath は次のようになります。
/ns1:item[@id='myroot']/ns1:category[@id='cat1']
しかし、次のコードを使用すると、常に何も得られません (XPath を試してみても)。
public static String evaluate(String xml, String xpathExpression) throws Exception
{
String result = "";
InputSource is = new InputSource(new StringReader(xml));
XPath xPath = XPathFactory.newInstance().newXPath();
result = xPath.evaluate(xpathExpression, is);
System.out.println("result=" +result);
}
どんな助けでも大歓迎です。
ありがとう