是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函数的数字?

谢谢

是MS .net xpath实现支持的格式号

format-number()最初在XSLT 1.0中定义为特定于XSLT的函数(因此在XPath 1.0中不可用),并且在规范的2.0版本中保持这种方式。最后,在XPath 3.0中,它进入了XPath。