なぜxpathnavigator.movetoattribute()が機能していないのですか?
-
27-10-2019 - |
質問
Xpathnavigatorを(以前の属性名「名前」に移動するために)添付されたコードで動作させようとしていますが、どういうわけか移動したくありません。ない thisNavigator.MoveToFirstAttribute()
または thisNavigator.MoveToAttribute("NAME", "");
作品...
私のXMLコンテンツはこのように多かれ少なかれ見えます
<PARAM NAME="Debug" HINT="Debug" TYPE="Int" VALUE="1" LEVEL="3"/>
私のコード:
switch (thisNavigator.Name)
{
case "VALUE":
{
thisNavigator.MoveToFirstAttribute();
thisNavigator.MoveToAttribute("NAME", "");
}
編集確認したばかりで確認しただけです。
string x = thisNavigator.NamespaceURI;
そして、それは確かに空ですので、今はさらに混乱しています。
編集2わかりました、私はこれを解決しましたが、一種の長い道のりです。私は親に戻り、次にこの子供に戻り、指定された名前で属性に戻らなければなりません。 「後方」に与えられた属性に行きたくない理由を誰かが知っているなら、私は答えに感謝します。これが私のコードです:
thisNavigator.MoveToParent();
thisNavigator.MoveToFirstChild();
thisNavigator.MoveToAttribute("NAME", "" );
解決
わかりました、私はこれを解決しましたが、一種の長い道のりです。私は親に戻り、次にこの子供に戻り、指定された名前で属性に戻らなければなりません
提供されたコード:
thisNavigator.MoveToAttribute("NAME", "" );
手段:if thisNavigator
名前の属性を持つ要素を表します "NAME"
, 、その属性を「移動する」。
これが成功しなかった最も愚かな理由はそれです thisNavigator
要素をまったく表していないか、名前の属性を持たない要素を表す "NAME"
.
からの次の抜粋 MSDNドキュメント 役に立つかもしれません:
備考
Xpathnavigatorが現在要素に配置されていない場合、このメソッドはFALSEを返します。
MovetOattributeへの呼び出しが成功した後、LocalName、NamesSpaceuri、およびプレフィックスプロパティは、属性の値を反映しています。 Xpathnavigatorが属性に配置されている場合、MovetOnext、MovetOprevious、およびMovetofirstの方法は適用されません。これらの方法は常にfalseを返し、ナビゲーターの位置を変更しません。むしろ、MovetOnextattributeを呼び出して次の属性ノードに移動できます。
属性に位置すると、Movetoparentを呼び出して所有者要素に移動できます。