是MS .net xpath实现支持的格式号
本文关键字:格式 支持 实现 MS net xpath | 更新日期: 2023-09-27 18:17:03
我在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函数的数字?
谢谢
format-number()最初在XSLT 1.0中定义为特定于XSLT的函数(因此在XPath 1.0中不可用),并且在规范的2.0版本中保持这种方式。最后,在XPath 3.0中,它进入了XPath。