1

アプリケーションで dom4j を使用しようとしていますが、次の XML ファイルの解析で問題が発生しました。

<menu xmlns="http://example.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://example.com/ my-schema.xsd">
    <content>
        <caption>aaa</caption>
        <description>vvvv</description>
    </content>
</menu>

dom4j パーサーを初期化し、説明ノードを取得しようとしています:

Node node = document.selectSingleNode( "/menu/content/description" );

(イテレータを使用できることはわかっていますが、xpath の方が適しています)

null説明ノードの代わりに持っています。

何が問題なのかを理解しようとしたときに、xml からスキーマ宣言を削除した (そのため、最初は単純な単純なものしかありませんでし<menu>た) と、完全に正常に機能しました。

私はむしろその XSD 宣言を持っているので、何が間違っているのでしょうか?

前もって感謝します!

4

1 に答える 1

0

xpath が失敗する理由は、名前空間に対応していないためです。

これを試してください:

/*[local-name()='menu' and namespace-uri()='http://example.com/']/*[local-name()='content' and namespace-uri()='http://example.com/']/*[local-name()='description' and namespace-uri()='http://example.com/']

さらに良いことに、DanSharp Xml Viewer をダウンロードすると、これらのパスを自分で生成できます。

http://www.bizbert.com/bizbert/2007/11/25/DanSharp+XmlViewer.aspx

于 2011-08-16T11:21:14.353 に答える