どこかから来るXMLを解析するためにdom4j1.6.1を使用しています。時々、baliseは名前空間(例えば:)に言及し、時には()に言及しません。そして、Element.selectSingleNode(String s)の呼び出しは失敗します。
今のところ3つの解決策がありますが、それらに満足していません
1-xmlドキュメントで何かを行う前に、名前空間の出現をすべて削除します
xml = xml .replaceAll("xmlns=\"[^\"]*\"","");
xml = xml .replaceAll("ds:","");
xml = xml .replaceAll("etm:","");
[...] // and so on for each kind of namespace
2-ノードを取得する直前に名前空間を削除する
Element.remove(Namespace ns)
ただし、ノードと最初のレベルの子に対してのみ機能します
3-コードを整理する
node = rootElement.selectSingleNode(NameWithoutNameSpace)
if ( node == null )
node = rootElement.selectSingleNode(NameWithNameSpace)
それで、あなたはどう思いますか ?魔女の方が悪いですか?提案する他の解決策はありますか?