0

有人知道如何将 System.Xml.XPath.XPathNavigator(由 XML.XmlDocument.CreateNavigator 创建)的光标移动到由 XPath-Expression 定义的位置吗?我的问题是我必须使用相对路径,但据我所知 XPathNavigator 不提供任何功能

Cadburry:谢谢,我试过了,但是 .moveNext() 方法只返回 TRUE 一次,并且导航器光标仍然指向根元素。(ni.current.InnerXML 返回我的 xml)

我的 xml 简化:

<Ediakt>
<Header>        
</Header>
<MetaData>  
</MetaData>
<Payload>
    <Layer2>    
    </Layer2>           
    <Layer2>    
    </Layer2>
    <Layer2>    
    </Layer2>
</Payload>
</Ediakt>

我的 xPath 表达式是:/Ediakt/Payload/Layer[2]

4

2 回答 2

0

您可以通过将节点作为 XpathExpression 传递然后移动来选择节点来实现它

XPathNodeIterator ni = myNavigator.Select(xPathExpression);
while (ni.MoveNext())
{
///    .....
}
于 2012-07-12T09:41:26.743 回答
0

感谢 HatSoft 的启发:

如果我先编译表达式并将上下文设置为我的命名空间管理器——那么它就可以工作了!!

System.Xml.XPath.XPathExpression ex = System.Xml.XPath.XPathExpression.Compile("myexpression");
ex.SetContext(mynamespacemanager);


System.Xml.XPath.XPathNodeIterator ni = nav.Select(ex);
// ni.Current.ReplaceSelf()
//ni.m()
while (ni.MoveNext()) {
}
于 2012-07-13T06:53:23.710 回答