使用多个XPATH的Filter条件失败

时间:2017-02-15 11:24:25

标签: xpath filter

我正在尝试使用xpath实现多个过滤器,以便过滤器的输出是具有以下内容的所有CompoundEmployee节点:

  • 所有job_information首次出现的employee_class不应为EX

  • 所有job_information首次出现的所有events都可以26

  • 只有在event = 26

  • 的情况下才能显示last_modified_on custom_date1

来源xml

<?xml version="1.0" encoding="utf-8"?> 
    <queryCompoundEmployeeResponse> 
        <CompoundEmployee> 
            <person> 
                <employment_information> 
                    <job_information> 
                        <employee_class>WC</employee_class> 
                        <event>26</event> 
                        <event_reason>FUNDBREA</event_reason> 
                        <last_modified_on>20170215</last_modified_on> 
                        <custom_date1>20170215</custom_date1> 
                    </job_information> 
                </employment_information> 
            </person> 
       </CompoundEmployee> 
  </queryCompoundEmployeeResponse>

我使用的xpath过滤器是

/queryCompoundEmployeeResponse/CompoundEmployee[person/emplo‌​yment_information/jo‌​b_information[1]/emp‌​loyee_class!='EX' and (person/employment_information/job_information[1]/event='26' and person/employment_information/job_information[1]/last_modifi‌​ed_on=person/employm‌​ent_information/job_‌​information[1]/custo‌​m_date1) ]

我在运行时遇到错误。

你能帮助我吗?

谢谢, 维基

1 个答案:

答案 0 :(得分:1)

请尝试以下操作,让我知道结果:

//CompoundEmployee[person[employment_information[job_information[not(employee_class="EX")][not(event="26") or last_modified_on=custom_date1]]]]

上面的表达式应该返回

CompoundEmployee节点

  • 包含person

    • 包含employment_information

      • 包含job_information

        • employee_class!=EX

        • event!=26

        • 但如果last_modified_on==custom_date1,则event==26也可以接受