使用Xpath导航器获取xml文档中两个产品的平均价格

时间:2013-11-19 15:22:43

标签: xml xpath

我有以下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)”行。我做错了什么?

1 个答案:

答案 0 :(得分:0)

对于可能返回字符串,布尔值或数字而不是节点集的XPath表达式,您需要使用Evaluate而不是Select - Console.WriteLine行是正确的,{{ 1}}呼叫是不必要的。