如何在XPath中使用sum函数?

Aze*_*eem 3 xml xpath

我有一个包含以下内容的xml文件:

<Xavor>
<Dev>
    <Emp>1</Emp>
    <Floor>1</Floor>
    <Salary>1200.4</Salary>
</Dev>
<Dev>
    <Emp>2</Emp>
    <Salary>3100.8</Salary>
</Dev>
<Dev>
    <Emp>3</Emp>
    <Floor>1</Floor>
</Dev>
Run Code Online (Sandbox Code Playgroud)

我想用sum函数计算前两个员工的工资总和.我来到这个XPath:

sum(/Xavor/Dev[2]/Salary/text())
Run Code Online (Sandbox Code Playgroud)

但这只返回第二个工资值,即3100.8!!! 当工资中只有非浮点数时,这个XPath工作得很好.请帮帮我.

Rub*_*ias 11

试试这个:

sum(/Xavor/Dev[position() &lt;= 2]/Salary/text())
Run Code Online (Sandbox Code Playgroud)


Dim*_*hev 7

除了@Rubens Farias的正确答案之外,如果你想要总结所有Dev指定(数字)工资的薪水,请使用:

sum(/*/Dev/Salary[number(.) = number(.)])
Run Code Online (Sandbox Code Playgroud)

  • +1 - 我喜欢这种方法比我通常使用的'NaN'方法更好.(`sum(/*/Dev/Salary [string(number(.))!='NaN'])`) (3认同)
  • @LuisFilipe,完全正确.根据定义,NaN不等于任何其他东西,包括NaN (2认同)