以下代码片段产生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;
}
我对这种行为感到惊讶,所以我将count()函数查看到XPATH 规范中:
count 函数返回参数节点集中的节点数。
到目前为止一切都很好,但是,什么是数字?答案在同一个规范中:
数字(浮点数)
显然,这已在XPATH 2.0中修复以返回 xs:integer,但我仍然对此感到好奇。
有谁知道为什么 W3C 决定为count()函数使用十进制数?