0

次のXMLドキュメントがあります。

<application xmlns="http://www.example.com/schemas/app-config/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.example.com/schemas/app-config/1.0   http://www.example.com/schemas/app-config/1.0/app-config-1.0.xsd">
    <info name="Dummy Application" runningOn="Dev"/>
</application>

次のコードを実行すると:

XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("/application/info@name");

私はXPathExpressionExceptionそのcompile方法を理解します。例外のメッセージは単に「null」です。XPathを使用して属性を正しく検索しているように見えますnameが、すべてのXMLNSおよびXSI宣言がここで問題を引き起こしているのではないかと思います。そうでなければ、私は完全に無知であり、この例外の原因がわかりません。

1つ-インスタンスを実際のオブジェクトcompileに関連付ける前に、どのように失敗する可能性がありますか?!?xpathDocument

4

2 に答える 2

2

XPath式が無効であるため、compileメソッドは例外をスローします。おそらく使用したいと思うでしょう"/application/info/@name"

于 2012-06-04T14:35:51.883 に答える
1

式に構文エラーがあるだけです。/application/info@name正しい構文は/application/info/@nameです。ただし、XMLサンプルにはデフォルトの名前空間があるため、XPath 1.0では式/application/info/@nameはそのサンプル内の何も選択しないことに注意してください。XPath2.0では、XPath評価のデフォルトの名前空間を関連付けて定義する必要があります。dfXPath 1.0では、Javaコードでデフォルトの名前空間のプレフィックス(例)を定義してから、例を使用する必要があります/df:application/df:info/@name。私はJavaXPathAPIに精通していないため、XPathNamespaceContextなどを使用して名前空間を設定する方法に関する具体的なコードについて他の誰かが支援する必要があります。

于 2012-06-04T14:35:20.607 に答える