MS .net xpath实现是否支持format-number?

时间:2016-11-08 01:59:22

标签: c# xpath visual-studio-2015

我在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函数格式化数字的方法?

由于

1 个答案:

答案 0 :(得分:0)

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