我有以下xml:
<products>
<product id="1">
<name>Cigarettes</name>
<price>5</price>
<stack>On stack</stack>
<date>19.11.2016</date>
</product>
<product id="2">
<name>Frozen vegetables</name>
<price>10</price>
<stack>Not on stack</stack>
<date>22.08.2014</date>
</product>
</products>
我正在尝试计算和写出这两种产品的平均价格:
static void calculateAverage()
{
XPathDocument docNav = new XPathDocument("Products.xml");
XPathNavigator nav = docNav.CreateNavigator();
string xpath = "sum(/products/product/price) div count(/products/product/price)";
XPathNodeIterator it = nav.Select(xpath);
Console.WriteLine("\nAverage price is {0}eur", nav.Evaluate(xpath));
}
它抛出异常“表达式必须求值为节点集”。在“XPathNodeIterator it = nav.Select(xpath)”行。我做错了什么?
答案 0 :(得分:0)
对于可能返回字符串,布尔值或数字而不是节点集的XPath表达式,您需要使用Evaluate
而不是Select
- Console.WriteLine
行是正确的,{{ 1}}呼叫是不必要的。