なぜ私はXPathNavigator.GetAttributeに空の名前空間を渡す必要がありますか?
-
20-09-2019 - |
質問
次のXMLマークアップを考える:
<root xmlns="Demo">
<child name="foo"/>
</root>
とXPathNavigator
要素上に配置<child>
、
string withNs = navigator.GetAttribute("name", navigator.NamespaceURI);
string withoutNs = navigator.GetAttribute("name", "");
奇妙な結果を生む:withNs
が空で、withoutNs
はfoo
が含まれています。
それはなぜですか?私はname
属性がDemo
要素のようなchild
名前空間でなければなりませんよう、それは、他の方法でラウンドだろうと予想しているでしょう。
MSDNのドキュメントはnamespaceURI=""
を渡すのいずれかの魔法の意味を言及していないので、私はあなたが属性の本当の名前空間URIを渡す必要が想定しています。
解決
name
属性としてDemo
要素のようなchild
名前空間に存在する必要があります。
の属性はW3Cの仕様に従って、彼らが所属する要素の名前空間を継承しませんし、あなたが正しいそれらの結果を、得た理由です。
関連記事:ます。http://ウェブ。 archive.org/web/20170118162309/http://www.xmlplease.com/attributexmlnsする
所属していません StackOverflow