0

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

基本上在函数中我有一个System.Xml.XPath.XPathNodeIterator并且我想在应用于该迭代器中的每个节点时获取 XPath 的值。

在这种情况下,XPath 是concat(name(.) , "_", string(.)),但它实际上可以是任何东西。

这会引发 XPathException:“表达式必须计算为节点集。” 哪种有道理

我怀疑我会被告知这不是有效的 XPath,而是其他一些与 xml/xsl 相关的功能,但是考虑到在 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);
}
4

1 回答 1

2

您将需要使用该Evaluate方法而不是SelectSingleNode. 而且您的 XPath 的结果不是.NET或 C# XPathNavigator,而是 XPath 。StringSystem.Stringstring

于 2013-08-08T11:02:33.520 回答