以下のようなライブラリ関数があります
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>
ここで、いくつかの定数を連結した account_no を返す xpath を作成する必要があります。
以下のようなコードを書きました
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文字列のみで行う必要があります。
ありがとうございました。