2012-08-16 64 views
2

以下语法正确执行以下操作?基于多个相邻值的XPATH

title_node.find("EST/EST_Version 
         [Master_Type_HD_SD='HD'] AND [Version_Type='Standard'] 
        /Vendor_ID").text 

这里是XML的外观:

<EST_Version> 
    <Vendor_ID>1660023-200455</Vendor_ID> 
    <Version_Type>Standard</Version_Type> 
    <Master_Type_HD_SD>SD</Master_Type_HD_SD> 
</EST_Version> 

实际上,这就是我想要做的(虽然下面是不正确的)

title_nod.find("EST/EST_Version[Master_Type_HD_SD='SD']/../ 
        EST_Version[Version_Type='Directors Cut']/Vendor_ID").text 
+0

所以只有当'VENDOR_ID '作为'EST_Version'的下一个子节点出现? – 2012-08-17 00:19:57

回答

1

对于多个谓词的过滤器(方括号),请不要将它们与and结合使用。只需顺序使用它们。第一个谓词过滤器被应用到组,然后应用下一个谓词过滤:

EST/EST_Version[Master_Type_HD_SD='HD'][Version_Type='Standard']/Vendor_ID 

在单个预测过滤器,你可以使用and多个标准:

EST/EST_Version[Master_Type_HD_SD='HD' and Version_Type='Standard']/Vendor_ID