XPath と名前空間のサポートの背後にあるストーリーは何ですか? 仕様としての XPath は名前空間より前にありましたか? 要素にデフォルトの名前空間が与えられているドキュメントがある場合:
<foo xmlns="uri" />
//foo
名前空間が原因でXPath プロセッサ ライブラリの一部が認識しないように見えますが、他のライブラリは認識します。私のチームが考えたオプションは、正規表現を使用して XPath に名前空間プレフィックスを追加することです (XmlNameTable を介して名前空間プレフィックスを追加できます) が、XPath はノード テストに関して非常に柔軟な言語であるため、これは脆弱に思えます。
これに適用される基準はありますか?
私のアプローチは少しハックですが、うまくいくようです。xmlns
検索/置換で宣言を削除してから、XPath を適用します。
string readyForXpath = Regex.Replace(xmldocument, "xmlns=\".+\"", String.Empty );
それは公正なアプローチですか、それとも誰かがこれを別の方法で解決しましたか?