2012-02-09 4 views
-2

、例えば、SELECTNODES、私はバグを検討任意の名前空間宣言、含まれている文書、での動作があります:XMLドキュメントは、任意の名前空間宣言(例のxmlns =が含まれている場合マイクロソフトのxpath名前空間 "バグ"をどう扱うのですか?使用したxPathでのXmlDocumentを処理する場合

は... ...か何か類似している)、xqueryは常に空になります。

これに対処の怠惰なお尻方法はXmlDocumenntにロードする前にXMLテキストに次のコードを実行することです:我々はまた、XPathの呼び出しに名前空間情報をPALLしてXmlNamespaceManagerを使用することができます

pg = Regex.Replace(pg, @"xmlns\s*\=\s*""[^""]*""", ""); 
pg = Regex.Replace(pg, @"xmlns\s*\=\s*'[^']*'", ""); 

。私は両方のアプローチが面倒だと思います(私は通常、ソフトウェアが扱う文書の名前空間を知らず、また気にしません)。

MicrosoftのXPathパーサーのこの動作を無効にする使いやすい方法がありますか?これは "気分"です。

+11

これはバグではなく、正しい動作です。 XMLの名前空間は関連しています。 – Lucero

+1

名前空間を解消する前に名前空間を理解する方法を学びます。 –

+0

ですから、事前にわからない任意の名前空間を持つ文書を解析する良い方法を教えてください。 –

答えて

4

名前空間について本当に気にしないのであれば、XMLからそれらを取り除くのが正しいと感じるでしょう。私はプロダクション環境でこのようなアプローチをお勧めしませんが、おそらくネームスペースを気にする必要があります。

+0

ですから、事前にわからない任意の名前空間を持つ文書を解析する良い方法を教えてください。 –

+1

それはデータで何をしたいかによって異なります。事前にネームスペースを知らないことは、あらかじめローカル名を知らないこととまったく同じであることを覚えておいてください。名前が事前に分かっていない要素から抽出できる情報はどれですか? –

関連する問題