给出以下xml:
<Title>
<EST>
<EST_Start_Date>2009-09-21</EST_Start_Date>
<EST_End_Date>2015-12-31</EST_End_Date>
<EST_Version>
<Vendor_ID>asdf-200130</Vendor_ID>
<Master_Type_HD_SD>SD</Master_Type_HD_SD>
</EST_Version>
<EST_Version>
<Digital_SKU>205119</Digital_SKU>
<Vendor_ID>qwer-205119</Vendor_ID>
<Master_Type_HD_SD>HD</Master_Type_HD_SD>
</EST_Version>
</EST>
</Title>
一个Title
节点:
titles = node.xpath("//Title")
for title in titles:
est=title.find('EST')
hd_vendor_id = ?
如何提取HD供应商ID,在这种情况下qwer-205118
? lxml调用应该与给定的Title节点相关,因为xml文档中有多个标题。
答案 0 :(得分:3)
使用XPath的强大功能!通过在EST_Version元素上使用谓词,您可以找到具有HD-Master_Type的谓词:
titles = node.xpath("//Title")
for title in titles:
hd_vendor_id = title.xpath(
"./EST/EST_Version[Master_Type_HD_SD='HD']/Vendor_ID)")
如果您只需要供应商ID,则可以使用一个XPath:
node.xpath("//Title/EST/EST_Version[Master_Type_HD_SD='HD']/Vendor_ID/text()")
如果您需要更多来自每个EST元素,您可以坚持使用语法:
titles = node.xpath("//Title")
for title in titles:
est=title.find('EST')
hd_vendor_id = est.xpath("./EST_Version[Master_Type_HD_SD='HD']/Vendor_ID)"
或者,例如,使用XPath立即选择EST元素:
ests = node.xpath("//Title/EST")
for est in ests:
hd_vendor_id = est.xpath("./EST_Version[Master_Type_HD_SD='HD']/Vendor_ID)"