使用 elementtree 根据孙标签查找元素

To find element based on grandchildren tags using elementtree

我对 xml 解析完全陌生。我有几千个 xml,我想找出所有元素 DE,仅当我有 国家/地区 标签

这是我的样本xml

<?xml version="1.0" encoding="UTF-8"?>
<DE>
   <CT>
      <IG>
         <FS id="01">
            <FE id="A" fId="B">
               <title>Apple</title>
            </FE>
         </FS>
         <country syse="21" subSys="2">
            <FF FR="101" fe="01" />
            <referTo refType="t06">
               <CF Code="350" />
            </referTo>
            <place id="00A" placeValue="00AB">
               <Q>001</Q>
               <TQ>0001</TQ>
               <PR Value="A" CodeValue="C" />
            </place>
            <place id="00E" placeValue="00EF">
               <Q>001</Q>
               <TQ>0001</TQ>
               <PR Value="03" AValue="957" />
               <Books>
                  <IA>
                     <Part />
                  </IA>
                  <PRGroup>
                     <country Code="5">
                        <PR Value="02" AValue="345" />
                        <constrain>Double condition.</constrain>
                        <constrain>Double condition.</constrain>
                     </country>
                  </PRGroup>
               </Books>
            </place>
         </country>
      </IG>
   </CT>
</DE>
import xml.etree.ElementTree as ET
tree = ET.parse(content)
root = tree.getroot()
Num = root.findall("//DE[//place/Books/PRGroup/country]")

我在尝试不同的方法时遇到谓词错误或绝对路径错误,但我无法解决这个问题。
如何检索结果并基于该结果访问属性 你能帮我解决这个问题吗?

对于 lxml,它应该是这样的:

from lxml import etree
content = """[your xml above]"""
root = etree.fromstring(content.encode())
Num = root.xpath("//DE[//place/Books/PRGroup/country]")