0
私はlinqpadでこのコード走っ:フォーマット番号はMS .net xpathの実装でサポートされていますか?
void Main()
{
//XElement doc = XElement.Load(new StringReader("<item><name>Some Name</name></item>"));
StringReader sr = new StringReader(@"<value>133445</value>");
XDocument doc = XDocument.Load(sr);
Evaluate(doc, "/value/text()").Dump();
Evaluate(doc, "format-number(/value/text(), '###,##0.00')").Dump();
}
private static string Evaluate(XDocument e, string expression)
{
object o = e.XPathEvaluate(expression);
var objects = o as IEnumerable<object>;
if (objects != null)
{
return objects.FirstOrDefault()?.ToString();
}
return o?.ToString();
}
を、出力は次のとおりです。
133445
XPathException:
Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.
呼び出し形式番号は、上記の例外で失敗します。 xpath関数を使って数値をフォーマットする別の方法はありますか?
おかげ
'format-number()'のように見えるのは[XPath 3.0関数](https://www.w3.org/TR/xpath-functions-30/#func-format-number)です。この場合、XPath 3.0をサポートするXPathエンジンが必要です。たとえば、Saxon for .NET – har07