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

本文关键字:不起作用 MoveToAttribute XPathNavigator 为什么 | 更新日期: 2023-09-27 18:16:41

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

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

好的,我已经解决了这个问题,但有点绕远路。我得回去了到父级,然后返回到子级,然后返回到带有的属性名字

提供的代码:

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

表示:如果thisNavigator代表具有名为"NAME"的属性的元素,则"移动到"该属性。

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

以下摘自MSDN文档的节选可能会有所帮助:


的评论


如果XPathNavigator当前不在某个元素上,则此方法返回false。

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

一旦定位到属性上,你可以调用movetopparent来移动到owner元素。