Вычисление значения из XPathNavigator

Я пытаюсь написать функцию для моего 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);
}

1 ответ

Решение

Вам нужно будет использовать Evaluate метод, а не SelectSingleNode, И результат вашего XPath не является XPathNavigatorэто XPath String соответственно.NET System.String или C# string,

Другие вопросы по тегам