Python - Element Tree正在删除XML声明

Jay*_*uso 10 python xml elementtree

我正在用元素树编写一些XML.

我给代码一个空模板文件,该文件以XML声明开头:<?xml version= "1.0"?>当ET完成更改并写入完成的XML时,它会删除声明并从根标记开始.我怎么能阻止这个?

写电话:

ET.ElementTree(root).write(noteFile)

aba*_*ert 20

根据文件:

write(file,encoding ="us-ascii",xml_declaration = None,method ="xml")

将元素树作为XML写入文件.file是文件名,或者是为写入而打开的文件对象.encoding 1是输出编码(默认为US-ASCII).xml_declaration控制是否应将XML声明添加到文件中.永远使用False,始终使用True,仅当不是US-ASCII或UTF-8时使用None(默认为None).method是"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)
Run Code Online (Sandbox Code Playgroud)


小智 5

ElementTree有不同的版本.他们中的一些人接受了这个xml_declaration论点,有些则没有.

我碰巧遇到的那个没有.它发出声明,当且仅当encoding != 'utf-8'.所以,为了得到声明,我打电话write(filename, encoding='UTF-8').