5

XML DOM を、できれば JDOM で処理する必要があり、ノードで XPath 検索を実行できます。ノード名またはパスは知っていますが、名前空間を完全に無視したいのは、ドキュメントに名前空間がある場合とない場合があり、特定の値に頼ることができないためです。それは可能ですか?どのように?

4

4 に答える 4

18
/ns:foo/ns:bar/@baz

になる

/*[local-name() = 'foo']/*[local-name() = 'bar']/@baz

あなたは要点を理解します。それが電光石火の速さであるとは期待しないでください。

于 2010-04-09T12:52:41.203 に答える
4

/*:foo(XPath 2.0以降)または/yournamespace:* ここで説明されているように使用できます。

最初のバリアントは、名前空間がないことを含め、それらが属する名前空間に関係なく、一致する名前を持つすべてのノードを選択します。後者は、ノード名に関係なく、特定の名前空間に属するすべてのノードを選択します。

于 2010-11-25T19:24:31.083 に答える
4

この質問が少し古いことは承知していますが、後でこれを見る人のために、いくつかの JDOM デフォルト クラスをオーバーライドして、名前空間も効果的に無視するようにすることができます。独自の JDOMFactory 実装を、渡されたすべての名前空間値を無視する SAXBuilder に渡すことができます。

次に、SAXBuilder クラスをオーバーライドし、createContentHandler メソッドを実装して、startPrefixMapping メソッドの定義が空白の SAXHandler を返すようにします。

私はこれを本番環境で使用していないので注意してください.

于 2010-05-18T19:42:08.177 に答える