从XPathNavigator计算值

本文关键字:计算 XPathNavigator | 更新日期: 2023-09-27 18:26:54

我正在尝试为XSL转换编写一个函数。

基本上,在函数中,我有一个System.Xml.XPath.XPathNodeIterator,当应用于迭代器中的每个节点时,我希望获得XPath的值。

在这个例子中,XPath是concat(name(.) , "_", string(.)),但它实际上可以是任何东西。

这引发了XPathException:"表达式必须计算为节点集。"哪种有意义

我怀疑我会被告知这不是一个有效的XPath,而是一些其他与xml/xml相关的功能。然而,考虑到在xsl中我可以做到这一点:

<xsl:value-of select="concat(name(.) , "_", string(.))"/>

这就是我想要的——但在功能范围内。

我用的是C#,但VB的答案是可以接受的。

System.Xml.XPath.XPathNodeIterator Nodes = whatever;
string KeySelector="concat(name(.), '_', string(.))";
while (Nodes.MoveNext())
{
    System.Xml.XPath.XPathNavigator xpnValue = Nodes.Current.SelectSingleNode(KeySelector);
}

从XPathNavigator计算值

您需要使用Evaluate方法,而不是SelectSingleNode。XPath的结果不是XPathNavigator,而是XPath String,分别是.NET System.String或C#string