如何在Python中编写没有标题的XML文件?

Nic*_*mer 7 python xml

当使用Python的库存XML工具(例如xml.dom.minidomXML编写)时,文件总是会像

<?xml version="1.0"?>

[...]

虽然这是完全合法的XML代码,甚至建议使用标题,但我想摆脱它,因为我正在使用的程序之一存在问题.

我似乎无法找到合适的选项xml.dom.minidom,所以我想知道是否有其他包允许忽略标题.

干杯,

尼科

bob*_*nce 15

遗憾的是minidom,您没有选择省略XML声明.

但是,您始终可以通过调用toxml()文档的根元素而不是文本来自行序列化文档内容document.那么您将无法获得XML声明:

xml= document.documentElement.toxml('utf-8')
Run Code Online (Sandbox Code Playgroud)

...但是你也不会在根元素之外得到任何其他内容,例如DOCTYPE,或任何注释或处理指令.如果需要,请逐个序列化文档对象的每个子项:

xml= '\n'.join(node.toxml('utf-8') for node in document.childNodes)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有其他软件包允许忽略标头.

DOM Level 3 LS 定义了一个xml-declaration可用于抑制它的配置参数.我所知道的唯一Python实现是pxdom,它在标准支持方面是彻底的,但根本不是很快.


ste*_*ano 5

如果你想使用minidom并保持'漂亮',那么这是一个快速/ hacky修复:

xml_without_declaration.py:

import xml.dom.minidom as xml

doc = xml.Document()

declaration = doc.toxml()

a = doc.createElement("A")
doc.appendChild(a)
b = doc.createElement("B")
a.appendChild(b)

xml = doc.toprettyxml()[len(declaration):]

print xml
Run Code Online (Sandbox Code Playgroud)