我使用xpath来从xml获取值。我发现了一个特殊的情况:
<Docs>
<Doc>
<tag1>0</tag1>
<tag2>150.0</tag2>
</Doc>
<Doc>
<tag1>45</tag1>
<tag2>0</tag2>
</Doc>
</Docs>
每个Doc实体有两个可能性:
案例1: if(tag1
= 0且tag2
!= 0)或(tag2 = 0且tag1!= 0),我需要返回非 - 零价值。
案例2:也许这两个字段是0.我需要返回0
UPDATE1: 例如: 假设我查询第一个节点Doc(/ Docs / doc [0])。我需要150.0。对于第二个(/ Docs / doc [1]),我需要得到45。
如何使用xpath解决这个问题?
答案 0 :(得分:1)
简单 xpath 表达式:
//Doc/*[text() != '0']/text()
XPath结果:
150.0
45
答案 1 :(得分:0)
您可以使用xpath union(|)运算符,以涵盖所有情况:
Docs/Doc[tag1=0]/tag2[.!=0]/text() |
Docs/Doc[tag2=0]/tag1[.!=0]/text() |
Docs/Doc[tag1=0 and tag2=0]/tag1/text()
答案 2 :(得分:0)
我找到了一个很棒且可读的解决方案:
Docs/Doc/*[starts-with(name(), 'tag') and .!=0][1]/text()