我试图让我的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", "" );
好的,我已经解决了这个问题,但有点绕远路。我得回去了到父级,然后返回到子级,然后返回到带有的属性名字
提供的代码:
thisNavigator.MoveToAttribute("NAME", "" );
表示:如果thisNavigator
代表具有名为"NAME"
的属性的元素,则"移动到"该属性。
失败的最可能的原因是thisNavigator
根本不代表一个元素,或者代表一个没有名为"NAME"
的属性的元素。
以下摘自MSDN文档的节选可能会有所帮助:
的评论
如果XPathNavigator当前不在某个元素上,则此方法返回false。
成功调用MoveToAttribute后,LocalName、NamespaceURI和Prefix属性反映了该属性的值。当XPathNavigator定位在属性上时,MoveToNext、MoveToPrevious和MoveToFirst方法不适用。这些方法总是返回false,并且不会改变导航器的位置。相反,你可以调用MoveToNextAttribute来移动到下一个属性节点。
一旦定位到属性上,你可以调用movetopparent来移动到owner元素。