我试图让我的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", "" );
答案 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元素。