なぜ私はXPathNavigator.GetAttributeに空の名前空間を渡す必要がありますか?

StackOverflow https://stackoverflow.com/questions/1922534

質問

次のXMLマークアップを考える:

<root xmlns="Demo">
    <child name="foo"/>
</root>

XPathNavigator要素上に配置<child>

string withNs = navigator.GetAttribute("name", navigator.NamespaceURI);
string withoutNs = navigator.GetAttribute("name", "");

奇妙な結果を生む:withNsが空で、withoutNsfooが含まれています。

それはなぜですか?私はname属性がDemo要素のようなchild名前空間でなければなりませんよう、それは、他の方法でラウンドだろうと予想しているでしょう。

MSDNのドキュメントはnamespaceURI=""を渡すのいずれかの魔法の意味を言及していないので、私はあなたが属性の本当の名前空間URIを渡す必要が想定しています。

役に立ちましたか?

解決

  

name属性としてDemo要素のようなchild名前空間に存在する必要があります。

の属性はW3Cの仕様に従って、彼らが所属する要素の名前空間を継承しませんし、あなたが正しいそれらの結果を、得た理由です。

関連記事:ます。http://ウェブ。 archive.org/web/20170118162309/http://www.xmlplease.com/attributexmlnsする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top