Python如何使用ElementTree向现有XML文件追加新的<item>节点
Python ElementTree 新增XML
<item>节点实现方案 直接使用Python标准库内置的xml.etree.ElementTree即可完成需求,无需安装第三方依赖,以下是可直接运行的实现代码:
Python 3.9+ 版本代码(支持自动格式化缩进,输出格式完全匹配需求)
import xml.etree.ElementTree as ET # 1. 读取原有XML文件 tree = ET.parse('你本地的XML文件路径.xml') root = tree.getroot() # 2. 构建新的item节点及子节点 new_item = ET.Element('item') # 添加title子节点 title_elem = ET.SubElement(new_item, 'title') title_elem.text = 'Ticket number 02' # 添加link子节点 link_elem = ET.SubElement(new_item, 'link') link_elem.text = 'https://blabl12abla.com/01' # 添加pubDate子节点 pubdate_elem = ET.SubElement(new_item, 'pubDate') pubdate_elem.text = 'Wed, 16 Jul 2021 21:13:00 GMT' # 3. 将新item节点追加到channel根节点末尾 root.append(new_item) # 4. 自动格式化缩进(Python3.9及以上版本内置方法) ET.indent(root, space=" ") # 5. 保存修改后的XML文件 tree.write('修改后的输出文件路径.xml', encoding='utf-8', xml_declaration=True)
Python 3.9以下版本适配方案
低版本Python没有内置ET.indent方法,添加以下自定义缩进函数替换即可:
# 自定义缩进工具函数 def format_indent(elem, level=0): i = "\n" + level*" " if len(elem): if not elem.text or not elem.text.strip(): elem.text = i + " " if not elem.tail or not elem.tail.strip(): elem.tail = i for sub_elem in elem: format_indent(sub_elem, level+1) if not sub_elem.tail or not sub_elem.tail.strip(): sub_elem.tail = i else: if level and (not elem.tail or not elem.tail.strip()): elem.tail = i # 调用自定义缩进函数替换内置ET.indent即可 format_indent(root)
内容的提问来源于stack exchange,提问作者TheWiz
相关产品推荐
相关产品推荐

