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 好的,我已经解决了这个问题,但还有很长的路要走。我必须回到父母,然后回到这个孩子,然后回到给定名称的属性。如果有人知道为什么它不想转到给定属性“向后”,我将不胜感激。这是我的代码:

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

1 回答 1

1

好的,我已经解决了这个问题,但还有很长的路要走。我必须回到父母,然后回到这个孩子,然后回到给定名称的属性

提供的代码:

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

表示:如果thisNavigator表示具有名为 的属性的元素,则"NAME"“移至”该属性。

这不成功的最可能的原因是它thisNavigator根本不代表一个元素,或者代表一个没有名为的属性的元素"NAME"

MSDN 文档的以下摘录可能会有所帮助


评论


如果 XPathNavigator 当前未定位在元素上,则此方法返回 false。

成功调用 MoveToAttribute 后,LocalName、NamespaceURI 和 Prefix 属性反映了属性的值。当 XPathNavigator 定位在属性上时,MoveToNext、MoveToPrevious 和 MoveToFirst 方法不适用。这些方法总是返回 false 并且不改变导航器的位置。相反,您可以调用 MoveToNextAttribute 来移动到下一个属性节点。

一旦定位在属性上,您可以调用 MoveToParent 移动到所有者元素。

于 2011-12-05T01:39:18.680 回答