python 使用 lxml 生成xml文件-回执包,,确保生成的 XML 文件头包含 <?xml version=“1.0“ encoding=“UTF-8“ standalone=“yes“?>

要使生成的 XML 文件头包含 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>,只需在调用 write() 方法时添加 standalone="yes" 参数即可。一下是实现函数:

 

python

from lxml import etree

def generate_or_update_xml(file_name, root_name, node_paths_and_values):
    root = etree.Element(root_name)

    # 读取已有文件内容(如果存在),并附加到根节点下
    if os.path.exists(file_name):
        tree = etree.parse(file_name)
        root.extend(tree.getroot().getchildren())

    # 处理每个节点路径和值
    for path, value in node_paths_and_values:
        path_parts = path.split('/')
        current_node = root
        for part in path_parts[:-1]:  # Iterate over all but the last part (the value node)
            child = current_node.find(part)
            if child is None:  # Create the child node if it doesn't exist
                child = etree.SubElement(current_node, part)
            current_node = child

        # Set the value for the last part of the path
        current_node.text = value

    # 创建 ElementTree 对象,设置编码为 UTF-8,并保存到文件
    tree = etree.ElementTree(root)
    with open(file_name, 'wb') as f:
        tree.write(f, encoding="utf-8", xml_declaration=True, standalone="yes", pretty_print=True)

# 示例用法
generate_or_update_xml(
    file_name="output.xml",
    root_name="root",
    node_paths_and_values=[
        ("node1/subnode1", "value1"),
        ("node2/subnode2", "value2"),
        ("node3/subnode3/subsubnode", "value3")
    ]
)

在这个版本的函数中,我们添加了 standalone="yes" 参数,确保生成的 XML 文件头包含 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>。确保已安装 lxml 库(可通过 pip install lxml 安装),并使用这个函数生成或更新 XML 文件。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值