如何根据 XML 的 XPath 子节点值获取特定块(组)?

How to get specific block(group) based on child node's value in XPath from the XML?

我是 XPath 的新手。我有以下 XML 文件。 这是我的 xml 文件:

<?xml version='1.0' encoding='utf-8'?>
<items>
   <item>
      <country>India</country>
      <referenceId>IN375TP</referenceId>
      <price>400</price>
   </item>
   <item>
      <country>Australia</country>
      <referenceId>AU120ED</referenceId>
      <price>15</price>
   </item>
   <item>
      <country>United Kingdom</country>
      <referenceId>UK862RB</referenceId>
      <price>20</price>
   </item>
</items>

我想要以下 <item> 标签作为输出:

<item>
  <country>Australia</country>
  <referenceId>AU120ED</referenceId>
  <price>15</price>
</item>      

注意:请使用/items/item[referenceId/text()="AU120ED"]

等条件

如果您想按国家/地区查找项目,您可以使用 xpath 指定您要在具有 text=country_name 的项目中查找该项目:

from lxml.etree import parse, HTMLParser

xml = parse("check.xml",HTMLParser())

print(xml.find("//items//item[country='Australia']"))
<Element item at 0x7f40faa28950>

如果你真的想搜索是referenceid,只需更改为item[referenceid='AU120ED']:

print(xml.find("//items//item[referenceid='AU120ED']"))
<Element item at 0x7f02c0c24998>

对于xml:

from xml.etree import ElementTree as et

xml = et.parse("check.xml")

print(xml.find(".").find("./item[referenceId='AU120ED']"))