У меня есть библиотечная функция, которая выглядит так, как показано ниже.
private static string Parse(XPathNavigator xNav, XPathExpression xPathExpression)
{
string result = string.Empty;
XPathNodeIterator xpathIterator = xNav.Select(xPathExpression.Clone());
while (xpathIterator.MoveNext())
{
result = result + xpathIterator.Current.TypedValue + "#";
}
return result;
}
И есть файл XML, который будет выглядеть так, как показано ниже.
<Account account_no ="100">
<Name>Hello</Name>
</Account>
Теперь мне нужно написать xpath, который вернет account_no, объединяя некоторую константу
Я написал код примерно как ниже
XPathDocument doc = new XPathDocument(@"..\..\test.xml", XmlSpace.Default);
XPathNavigator xNav = doc.CreateNavigator();
string xpath = "concat('Account No', /Account/@account_no)";
XPathExpression xPathExpression = XPathExpression.Compile(xpath);
string result = Parse(xNav, xPathExpression);
Результат, который я ожидаю, это account_no с префиксом некоторой текстовой константы. Поэтому я написал xpath как concat('Account No', /Account/@account_no). Но это не сработало, не удалось выполнить xNav.Select(). Пожалуйста, помогите мне, как написать правильный xpath, чтобы получить требуемый результат. У меня нет свободы вносить изменения в функцию синтаксического анализа, что бы я ни делал, я должен делать только строку xpath.
Спасибо.