Python-元素树正在删除XML声明
问题内容:
我正在用元素树编写一些XML。
我给代码一个以XML声明开头的空模板文件:<?xml version= "1.0"?>
当ET完成更改并写入完成的XML时,其将剥离声明并从root标记开始。我该如何阻止呢?
写电话:
ET.ElementTree(root).write(noteFile)
问题答案:
根据文档:
写(文件,编码=“ us-ascii”,xml_declaration =无,方法=“ xml”)
将元素树作为XML写入文件。file是文件名,或打开用于写入的文件对象。encoding
1是输出编码(默认为US-
ASCII)。xml_declaration控制是否应将XML声明添加到文件中。对于从不使用False,对于始终使用True,仅当非US-
ASCII或UTF-8(默认值为None)时才使用None。方法是“ xml”,“ html”或“ text”(默认为“ xml”)。返回编码的字符串。
因此,write(noteFile)
仅在编码不是US-ASCII或UTF-8且编码是US-
ASCII的情况下,明确告诉它编写XML声明;因此,您不会收到任何声明。
我想如果您没有读那么多的话,您的下一个问题将是“为什么我的Unicode损坏了”,所以让我们一次修复两个问题:
ET.ElementTree(root).write(noteFile, encoding="utf-8", xml_declaration=True)