工具编写思路

该代码定义了两个函数,generate_xml和remove_empty_nodes。generate_xml函数从模板路径读取XML模板,用给定参数替换占位符,然后删除空节点,最后保存为XML文件。remove_empty_nodes函数递归地从XML元素树中移除没有文本内容的节点。

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)
 

评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值