xml - XPath Select OR 多个字符串

标签 xml xpath

我有以下 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 表达式进行以下更正:

  1. 将左括号移至各自的开头 表达式。
  2. 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/

相关文章:

xml - XSLT:如何在另一个模板中重用一个模板

xml - INCLUDETEXT通过XPath选择特定的节点

java - 使用 XML 标记在 Saxonica 中检索 XPath 结果

xml - 仅从匹配属性值的列表中选择第一个元素

javascript - 如何使用 xpath javascript 选择特定单词

sql-server - 使用Any(,)分隔符在单列中检索的XML值

android - 将矢量资源导入 Android Studio 时出错

php - XMLReader 错误

java - 不幸的是应用程序已停止(第一次 Activity )

java - xjc 仅用于模式的一部分