gpt4 book ai didi

c# - 为什么 XPATH count 函数返回一个 double 而不是 int?

转载 作者:行者123 更新时间:2023-11-30 15:33:06 24 4
gpt4 key购买 nike

以下代码片段产生一个 InvalidCastException

    static int XPathCount()
{
var doc = new XmlDocument();
doc.LoadXml(
@"<root>
<item>value1</item>
<item>value2</item>
<item>value3</item>
</root>");

var navigator = doc.CreateNavigator();
var expression = navigator.Compile("count(//item)");
var count = navigator.Evaluate(expression);
return (int) count;
}

我对这种行为感到惊讶,所以我查看了 XPATH specification 中的 count() 函数:

The count function returns the number of nodes in the argument node-set.

到目前为止还不错,但是数字是什么?答案在同一个规范中:

number (a floating-point number)

显然这已在 XPATH 2.0 中修复返回一个 xs:integer 但我仍然对此感到好奇。

有谁知道为什么 W3C 决定为 count() 函数使用十进制数?

最佳答案

这不是小数。在 XPath 1.0 中它是一个 IEEE double float ,在 XPath 2.0 中它是一个整数。

出于与 Javascript 相同的原因,XPath 1.0 具有单一数字类型:在弱动态类型语言中,它非常有意义。此外,在设计 XPath 1.0 时,Javascript 被认为是宿主语言的主要候选者,这就是数据类型与 Javascript 保持一致的原因。

如果您只有一种数字类型可用,那么这就是 count() 必须返回的类型。

关于c# - 为什么 XPATH count 函数返回一个 double 而不是 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17960497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com