题
我有以下样品XML结构:
<SavingAccounts>
<SavingAccount>
<ServiceOnline>yes</ServiceOnline>
<ServiceViaPhone>no</ServiceViaPhone>
</SavingAccount>
<SavingAccount>
<ServiceOnline>no</ServiceOnline>
<ServiceViaPhone>yes</ServiceViaPhone>
</SavingAccount>
</SavingAccounts>
什么,我需要做的只是筛选'SavingAccount'节点使用XPATH的价值'ServiceOnline'是'是'或价值的'ServiceViaPhone'是肯定的。
XPATH应该回我的两个行!!我可以过滤'SavingAccount'节点,其中两件的价值都是类似下面的XPATH样,但是我想做的是一个或元件价值的比较???
/SavingAccounts/SavingAccount/ServiceOnline[text()='yes']/../ServiceViaPhone[text()='yes']/..
解决方案
这是一个非常根本的XPath功能:撰写若干条件的逻辑运算符 and
, or
, 和功能 not()
.
and
具有更高的优先级比 or
和两个运营者具有较低优先于 关系 和 平等 运营商(=
, !=
, >
, >=
, <
和 <=
).
因此,它是安全的写: A = B and C = D
一些最经常犯的错误:
人写的
AND
和/或OR
. 记住,XPath是情况的敏感.人们使用
|
(联盟)的操作者而不是的or
最后,这是我的解决方案:
/SavingAccounts/SavingAccount [ServiceOnLine='yes'或ServiceViaPhone='yes']
其他提示
/SavingAccounts/SavingAccount[(ServiceOnLine='yes') or (ServiceViaPhone='yes')]
威尔
/SavingAccounts/SavingAccount[ServiceOnline/text()='yes' or ServiceViaPhone/text()='yes']
做的伎俩?
我没有XPath计算器方便的时刻。
修改的结果, 如果我没有记错,你不需要文本(),所以
[ServiceOnline='yes' or ServiceViaPhone='yes']
应该是足够的,更具有可读性。
修改的结果, 是的,当然,“或”谓词表达式,是我不好。
不隶属于 StackOverflow