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