質問

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を呼び出して所有者要素に移動できます。

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