python - 在 ET 中搜索子元素

标签 python elementtree

我正在尝试搜索 XML 文件。我需要

  • 检查“localteam”名称是否与我的查询匹配(例如“Team A”)
  • 如果找到匹配项,请检查“awayteam”名称是否符合我的第二个条件(例如“Team B”),其元素位于同一元素内的“localteam”下方
  • 如果“awayteam”与我的查询匹配,则获取父级的 ID(在“match”中)并退出搜索。

我可以到达 localteam 元素,但我不知道如何搜索客队,并“向上”一个级别来获取 id...我尝试过使用 child.iter() 和 child .find('awayteam'),但都不起作用..

到目前为止我已经..

for child in root.iter('localteam'):
    gs_name = child.get('name')
    if gs_name == 'Team A':
        print child.tag, child.attrib
        for step_child in child.iter():
            print step_child.tag, step_child.attrib
            gs_name = child.get('name')

XML

<scores sport="sports">
  <category name="NAME" id="1419" file_group="USA">
      <match date="21.07.2013" time="04:00" status="Finished" id="56456456">
         <localteam name="Team A" />
         <random name="yyy" />
         <awayteam name="Team B" />
         <random name="xxx" />
</match>

最佳答案

改为搜索 match 元素:

for match in root.iter("match"):
    if (match.find("localteam").get("name") == "Team A" and
        match.find("awayteam").get("name") == "Team B"):
        print match.get("id")
        break

如果 find 调用没有找到任何内容,上面的代码将引发 AttributeErrors,因此您可能需要添加一些额外的检查或错误处理;例如

for match in root.iter("match"):
    localteam = match.find("localteam")
    awayteam = match.find("awayteam")
    if localteam is not None and awayteam is not None and ...

关于python - 在 ET 中搜索子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17777009/

相关文章:

python - 在 Ubuntu 13.10 上安装 Anaconda 会出现错误消息

python - 从 Pandas 列中删除字符

python - 在 numpy 数组中找到一些缺失点

Python 版本 2.7 : XML ElementTree: How to iterate through certain elements of a child element in order to find a match

python - 使用 ElementTree/lxml 查找文本字符串的父标签

python - 如何解决 xml.etree.ElementTree.iterparse() 中的 Unicode 错误?

python - 将任何 ASCII 字符串唯一编码为使用 ASCII 子集的字符串

python - Pyspark - 2 个数据帧之间的区别 - 识别插入、更新和删除

python - 将 XML 值存储为 Python 列表

python - python XML 解析存在一些问题