我有以下样品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 和两个运营者具有较低优先于 关系平等 运营商(=, !=, >, >=, &lt;&lt;=).

因此,它是安全的写: A = B and C = D

一些最经常犯的错误:

  1. 人写的 AND 和/或 OR. 记住,XPath是情况的敏感.

  2. 人们使用 | (联盟)的操作者而不是的 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']

应该是足够的,更具有可读性。

修改的结果, 是的,当然,“或”谓词表达式,是我不好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top