在ET中搜索子元素

2024-04-25 15:01:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我可以访问localteam元素,但我不知道如何搜索awayteam,也不知道如何“升级”一级来获取id。。。我试过用子.iter()和子项查找但两者都不起作用。。你知道吗

到目前为止我已经。。你知道吗

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>

Tags: name名称gsidchild元素formatch
1条回答
网友
1楼 · 发布于 2024-04-25 15:01:00

搜索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 ...

相关问题 更多 >

    热门问题