我在linqpad中运行了这段代码:
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.
调用format-number失败,上面有例外。是否有另一种使用xpath函数格式化数字的方法?
由于
答案 0 :(得分:0)
format-number()最初在XSLT 1.0中定义为特定于XSLT的函数(因此在XPath 1.0中不可用),并且在2.0版本的规范中保持这种方式。最后,使用XPath 3.0,它进入了XPath。