我有以下 XML,我需要获取 DESCR 为“30 年固定利率”、“15 年固定利率”和“双周 30 年固定利率”的所有产品。
<FEATURED_RATES>
<RATE_UPLOAD_DATE>03/19/2015 11:22 AM CT</RATE_UPLOAD_DATE>
<GROUPS>
<GROUP>
<NAME>FIXED RATE PRODUCTS</NAME>
<PRODUCT>
<DESCR>30 Year Fixed Rate</DESCR>
<RATE>3.75</RATE>
<APR>3.77</APR>
<POINTS>0</POINTS>
<PAYMENT_STREAM_URL></PAYMENT_STREAM_URL>
</PRODUCT>
<PRODUCT>
<DESCR>20 Year Fixed Rate</DESCR>
<RATE>3.625</RATE>
<APR>3.653</APR>
<POINTS>0</POINTS>
<PAYMENT_STREAM_URL>
</PAYMENT_STREAM_URL>
</PRODUCT>
<PRODUCT>
<DESCR>15 Year Fixed Rate</DESCR>
<RATE>3</RATE>
<APR>3.036</APR>
<POINTS>0</POINTS>
<PAYMENT_STREAM_URL>
</PAYMENT_STREAM_URL>
</PRODUCT>
</GROUP>
<GROUP>
<NAME>BIWEEKLY FIXED RATE PRODUCTS</NAME>
<PRODUCT>
<DESCR>Biweekly 30 Year Fixed</DESCR>
<RATE>3.75</RATE>
<APR>3.763</APR>
<POINTS>0</POINTS>
<PAYMENT_STREAM_URL>
</PAYMENT_STREAM_URL>
</PRODUCT>
<PRODUCT>
<DESCR>Biweekly 15 Year Fixed</DESCR>
<RATE>3</RATE>
<APR>3.031</APR>
<POINTS>0</POINTS>
<PAYMENT_STREAM_URL>
</PAYMENT_STREAM_URL>
</PRODUCT>
</GROUP>
</GROUPS>
我已经按照其他帖子中的建议进行了尝试,并且单个字符串可以工作并返回我期望的信息:
//FEATURED_RATES/GROUPS/GROUP/PRODUCT[DESCR = '30 Year Fixed Rate']
但是我无法让多个 OR 语句返回任何数据而不会出现错误:
//FEATURED_RATES/GROUPS/GROUP/PRODUCT[DESCR=('30 Year Fixed Rate') OR DESCR=('15 Year Fixed Rate')]
我收到一条错误消息,指出 //FEATURED_RATES/GROUPS/GROUP/PRODUCT[DESCR=('30 年固定利率') OR DESCR=('15 年固定利率')]
无效 token 。哪个 token 无效或我的哪些语法不正确?
最佳答案
对您的 XPath 表达式进行以下更正:
- 将左括号移至各自的开头 表达式。
- 将
OR
更改为or
(小写)。
总共:
//FEATURED_RATES/GROUPS/GROUP/PRODUCT[(DESCR='30 Year Fixed Rate') or (DESCR='15 Year Fixed Rate')]
然后给定您的 XML,上面的 XPath 表达式将选择
<PRODUCT>
<DESCR>30 Year Fixed Rate</DESCR>
<RATE>3.75</RATE>
<APR>3.77</APR>
<POINTS>0</POINTS>
<PAYMENT_STREAM_URL/>
</PRODUCT>
<PRODUCT>
<DESCR>15 Year Fixed Rate</DESCR>
<RATE>3</RATE>
<APR>3.036</APR>
<POINTS>0</POINTS>
<PAYMENT_STREAM_URL>
</PAYMENT_STREAM_URL>
</PRODUCT>
或者,以下 XPath 2.0 表达式也可以使用:
//FEATURED_RATES/GROUPS/GROUP/PRODUCT[DESCR = ('30 Year Fixed Rate', '15 Year Fixed Rate')]
关于xml - XPath Select OR 多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29173158/