以下代碼段產生InvalidCastException。爲什麼XPATH計數函數返回一個double而不是int?
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函數返回在參數節點設置節點的數量。
到目前爲止好,但是,什麼是號碼?答案是同規格:
號(一個浮點數)
顯然,這已被固定在XPATH 2.0返回一個xs:整數,但我還是好奇這一點。
有誰知道爲什麼W3C決定使用一個十進制數作爲count()函數?
我明白你的觀點。也許XPATH規範試圖儘可能與類型相關,並定義一個數字來涵蓋所有可能的結果。 – michelgb