根据 Xpath 表达式过滤记录
Filtering records based on Xpath expression
我正在尝试根据 2 位国家/地区代码 (ISO_3166-1_Alpha-2_Code) 过滤工作人员记录。我想过滤在国家 India(IN) 工作的工人的记录。
下面是XML源代码:
<wd:Get_Workers_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v32.0">
<wd:Worker>
<wd:Employment_Data>
<wd:Home_Country_Reference>
<wd:ID wd:type="ISO_3166-1_Alpha-2_Code">AR</wd:ID>
<wd:ID wd:type="ISO_3166-1_Alpha-3_Code">ARG</wd:ID>
</wd:Home_Country_Reference>
</wd:Employment_Data>
<wd:Personal_Data>
<wd:Name_Data>
<wd:First_Name>Rohit</wd:First_Name>
<wd:Last_Name>Singh</wd:Last_Name>
</wd:Name_Data>
</wd:Personal_Data>
</wd:Worker>
<wd:Worker>
<wd:Employment_Data>
<wd:Home_Country_Reference>
<wd:ID wd:type="ISO_3166-1_Alpha-2_Code">IN</wd:ID>
<wd:ID wd:type="ISO_3166-1_Alpha-3_Code">IND</wd:ID>
</wd:Home_Country_Reference>
</wd:Employment_Data>
<wd:Personal_Data>
<wd:Name_Data>
<wd:First_Name>Shivam</wd:First_Name>
<wd:Last_Name>Dubey</wd:Last_Name>
</wd:Name_Data>
</wd:Personal_Data>
</wd:Worker>
</wd:Get_Workers_Response>
我使用了下面的 Xpath 表达式:
//wd:Employment_Data[wd:Home_Country_Reference/wd:ID = 'IN']
这给了我以下输出:
Element='<wd:Employment_Data xmlns:wd="urn:com.workday/bsvc">
<wd:Home_Country_Reference>
<wd:ID wd:type="ISO_3166-1_Alpha-2_Code">IN</wd:ID>
<wd:ID wd:type="ISO_3166-1_Alpha-3_Code">IND</wd:ID>
</wd:Home_Country_Reference>
</wd:Employment_Data>'
此 Xpath 表达式的输出不包含 Personal_Data 节点。是否可以使用 Xpath 表达式根据 'IN' 国家/地区过滤数据并在输出中包含两个节点(Employment_Data 和 Personal_Data)?或者我们是否必须使用 XSLT 进行此转换?
预期输出:
<wd:Get_Workers_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v32.0">
<wd:Employment_Data>
<wd:Home_Country_Reference>
<wd:ID wd:type="ISO_3166-1_Alpha-2_Code">IN</wd:ID>
<wd:ID wd:type="ISO_3166-1_Alpha-3_Code">IND</wd:ID>
</wd:Home_Country_Reference>
</wd:Employment_Data>
<wd:Personal_Data>
<wd:Name_Data>
<wd:First_Name>Shivam</wd:First_Name>
<wd:Last_Name>Dubey</wd:Last_Name>
</wd:Name_Data>
</wd:Personal_Data>
</wd:Worker>
</wd:Get_Workers_Response>
您只选择了 EmploymentData 节点。请尝试以下操作:
//wd:Worker[wd:Employment_Data/wd:Home_Country_Reference/wd:ID = 'IN']
我正在尝试根据 2 位国家/地区代码 (ISO_3166-1_Alpha-2_Code) 过滤工作人员记录。我想过滤在国家 India(IN) 工作的工人的记录。
下面是XML源代码:
<wd:Get_Workers_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v32.0">
<wd:Worker>
<wd:Employment_Data>
<wd:Home_Country_Reference>
<wd:ID wd:type="ISO_3166-1_Alpha-2_Code">AR</wd:ID>
<wd:ID wd:type="ISO_3166-1_Alpha-3_Code">ARG</wd:ID>
</wd:Home_Country_Reference>
</wd:Employment_Data>
<wd:Personal_Data>
<wd:Name_Data>
<wd:First_Name>Rohit</wd:First_Name>
<wd:Last_Name>Singh</wd:Last_Name>
</wd:Name_Data>
</wd:Personal_Data>
</wd:Worker>
<wd:Worker>
<wd:Employment_Data>
<wd:Home_Country_Reference>
<wd:ID wd:type="ISO_3166-1_Alpha-2_Code">IN</wd:ID>
<wd:ID wd:type="ISO_3166-1_Alpha-3_Code">IND</wd:ID>
</wd:Home_Country_Reference>
</wd:Employment_Data>
<wd:Personal_Data>
<wd:Name_Data>
<wd:First_Name>Shivam</wd:First_Name>
<wd:Last_Name>Dubey</wd:Last_Name>
</wd:Name_Data>
</wd:Personal_Data>
</wd:Worker>
</wd:Get_Workers_Response>
我使用了下面的 Xpath 表达式:
//wd:Employment_Data[wd:Home_Country_Reference/wd:ID = 'IN']
这给了我以下输出:
Element='<wd:Employment_Data xmlns:wd="urn:com.workday/bsvc">
<wd:Home_Country_Reference>
<wd:ID wd:type="ISO_3166-1_Alpha-2_Code">IN</wd:ID>
<wd:ID wd:type="ISO_3166-1_Alpha-3_Code">IND</wd:ID>
</wd:Home_Country_Reference>
</wd:Employment_Data>'
此 Xpath 表达式的输出不包含 Personal_Data 节点。是否可以使用 Xpath 表达式根据 'IN' 国家/地区过滤数据并在输出中包含两个节点(Employment_Data 和 Personal_Data)?或者我们是否必须使用 XSLT 进行此转换?
预期输出:
<wd:Get_Workers_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v32.0">
<wd:Employment_Data>
<wd:Home_Country_Reference>
<wd:ID wd:type="ISO_3166-1_Alpha-2_Code">IN</wd:ID>
<wd:ID wd:type="ISO_3166-1_Alpha-3_Code">IND</wd:ID>
</wd:Home_Country_Reference>
</wd:Employment_Data>
<wd:Personal_Data>
<wd:Name_Data>
<wd:First_Name>Shivam</wd:First_Name>
<wd:Last_Name>Dubey</wd:Last_Name>
</wd:Name_Data>
</wd:Personal_Data>
</wd:Worker>
</wd:Get_Workers_Response>
您只选择了 EmploymentData 节点。请尝试以下操作:
//wd:Worker[wd:Employment_Data/wd:Home_Country_Reference/wd:ID = 'IN']