我正在尝试使用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/employment_information/job_information[1]/employee_class!='EX' and (person/employment_information/job_information[1]/event='26' and person/employment_information/job_information[1]/last_modified_on=person/employment_information/job_information[1]/custom_date1) ]
我在运行时遇到错误。
你能帮助我吗?
谢谢, 维基
答案 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
也可以接受