import os
from lxml import etree
def generate_xml(template_path, params):
# 读取模板文件
with open(template_path, 'r') as f:
template = f.read()
# 使用参数替换模板中的占位符
xml = template.format(**params)
# 将字符串解析为 xml 元素树
root = etree.fromstring(xml)
# 删除缺少参数的节点
remove_empty_nodes(root)
# 将 xml 元素树转换为字符串
xml = etree.tostring(root, encoding='unicode', pretty_print=True)
# 保存 xml 文件
filename = os.path.splitext(os.path.basename(template_path))[0] + '.xml'
with open(filename, 'w') as f:
f.write(xml)
def remove_empty_nodes(node):
# 递归删除缺少参数的节点
for child in node:
remove_empty_nodes(child)
if not node.text and len(node) == 0:
parent = node.getparent()
parent.remove(node)
该代码定义了两个函数,generate_xml和remove_empty_nodes。generate_xml函数从模板路径读取XML模板,用给定参数替换占位符,然后删除空节点,最后保存为XML文件。remove_empty_nodes函数递归地从XML元素树中移除没有文本内容的节点。





