为什么XPathNavigator.MoveToAttribute()不起作用?

时间:2011-12-04 09:18:44

标签: c# xml xpath xpathnavigator

我试图让我的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", "" );

1 个答案:

答案 0 :(得分:1)

  

好的我已经解决了这个问题,但还有很长的路要走。我得回去了   到父,然后回到这个孩子,然后到属性   名字

提供的代码:

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

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

最不可能的原因是thisNavigator根本不代表元素,或者表示没有名为"NAME"的属性的元素。

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


说明


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

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

一旦定位在属性上,就可以调用MoveToParent移动到owner元素。