1

XPathNavigatorを(前の属性名「NAME」に移動するために)添付されたコードで動作させようとしていますが、どういうわけか移動したくありません。どちら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;

そしてそれは確かに空なので、今私はさらに混乱しています。

EDIT2 OK私はこれを解決しましたが、かなり長い道のりです。親に戻り、次にこの子に戻り、次に指定された名前の属性に戻る必要があります。与えられた属性「後方」に行きたくない理由を誰かが知っているなら、私は答えに感謝するでしょう。これが私のコードです:

    thisNavigator.MoveToParent();
    thisNavigator.MoveToFirstChild();
    thisNavigator.MoveToAttribute("NAME", "" );
4

1 に答える 1

1

わかりました。これは解決しましたが、かなり長い道のりです。親に戻り、次にこの子に戻り、次に指定された名前の属性に戻る必要があります

提供されるコード:

       thisNavigator.MoveToAttribute("NAME", "" );   

意味:ifは、「move-to」thisNavigatorという名前の属性を持つ要素を表します。"NAME"

これが失敗する可能性が最も高い理由はthisNavigator、要素をまったく表していないか、という名前の属性を持たない要素を表しているためです"NAME"

次のMSDNドキュメントからの抜粋が役立つ場合があります


備考


XPathNavigatorが現在要素に配置されていない場合、このメソッドはfalseを返します。

MoveToAttributeの呼び出しが成功すると、LocalName、NamespaceURI、およびPrefixプロパティは属性の値を反映します。XPathNavigatorが属性に配置されている場合、メソッドMoveToNext、MoveToPrevious、およびMoveToFirstは適用されません。これらのメソッドは常にfalseを返し、ナビゲーターの位置を変更しません。代わりに、MoveToNextAttributeを呼び出して、次の属性ノードに移動できます。

属性に配置されたら、MoveToParentを呼び出して所有者要素に移動できます。

于 2011-12-05T01:39:18.680 に答える