You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python提取XML标签中的home id与away id值?

用Python提取XML中的home id和away id

方法一:使用xml.etree.ElementTree

假设你的XML结构类似以下示例:

<matches>
  <match>
    <home id="123">Team A</home>
    <away id="456">Team B</away>
  </match>
  <match>
    <home id="789">Team C</home>
    <away id="012">Team D</away>
  </match>
</matches>

可以用以下代码提取id:

import xml.etree.ElementTree as ET

# 加载XML文件(如果是字符串则用ET.fromstring(xml_str))
tree = ET.parse('matches.xml')
root = tree.getroot()

# 遍历match节点提取对应id
for match in root.findall('match'):
    home_id = match.find('home').get('id')
    away_id = match.find('away').get('id')
    print(f"Home ID: {home_id}, Away ID: {away_id}")

如果XML带有命名空间(比如<ns:match>),需要指定命名空间参数:

# 假设命名空间为xmlns="http://example.com/matches"
namespace = {'ns': 'http://example.com/matches'}
for match in root.findall('ns:match', namespace):
    home_id = match.find('ns:home', namespace).get('id')
    away_id = match.find('ns:away', namespace).get('id')
    print(f"Home ID: {home_id}, Away ID: {away_id}")

方法二:使用BeautifulSoup

基于上述XML示例,用BeautifulSoup的实现代码:

from bs4 import BeautifulSoup

# 读取XML文件(或直接传入XML字符串)
with open('matches.xml', 'r') as f:
    xml_content = f.read()

soup = BeautifulSoup(xml_content, 'xml')

# 按match节点分组提取(更严谨)
for match in soup.find_all('match'):
    home_id = match.find('home').get('id')
    away_id = match.find('away').get('id')
    print(f"Home ID: {home_id}, Away ID: {away_id}")

常见问题排查

  • 找不到节点:检查标签名称是否完全匹配(区分大小写),是否存在嵌套层级错误,或XML有未处理的命名空间。
  • get('id')返回None:确认标签确实包含id属性,属性名拼写是否正确(比如是否是team_id而非id)。

内容的提问来源于stack exchange,提问作者mikeyb313

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 07:38:23