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

如何用Python为XML的每个country标签追加population节点并保存?

给XML中所有节点追加节点的解决方案

原代码的问题

你的代码存在几个关键错误:

  • 混用了lxml.etree和标准库xml.etree.ElementTree的API,容易引发兼容性问题
  • root[0][0].append(...)错误地将字符串追加到第一个<country>的子节点<rank>内部,而非<country>节点下
  • 直接追加字符串不是合法的XML元素操作,必须创建Element对象
  • 缺少将修改后的内容保存回文件的步骤

修正后的代码

import lxml.etree as ET

# 解析目标XML文件
parser = ET.XMLParser(recover=True)
tree = ET.parse('country_data.xml', parser=parser)
root = tree.getroot()

# 遍历所有<country>节点,逐个添加<population>子节点
for country in root.findall('country'):
    # 创建<population>元素并设置文本内容
    population_node = ET.Element('population')
    population_node.text = '2318921212'
    # 将新元素追加到当前<country>节点下
    country.append(population_node)

# 保存修改后的XML到原文件,保留格式美观
tree.write(
    'country_data.xml',
    encoding='utf-8',
    xml_declaration=True,
    pretty_print=True
)

代码说明

  1. 遍历目标节点:通过root.findall('country')精准获取所有<country>节点,确保每个国家都被处理
  2. 创建合法元素:使用ET.Element()生成标准XML元素,避免直接拼接字符串导致的格式错误
  3. 保存文件:tree.write()方法负责将修改后的XML树写入原文件,pretty_print=True保证输出格式与原文件一致,可读性强
  4. 统一API:全程使用lxml.etree的接口,避免不同XML解析库的冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:25:31