如何将xml标头添加到dom对象

时间:2010-10-20 22:39:00

标签: python xml dom

我正在使用Python的xml.dom.minidom,但我认为这个问题对任何DOM解析器都有效。

我的原始文件在开头有这样的一行:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

这似乎不是dom的一部分,所以当我执行类似dom.toxml()的操作时,结果字符串在开头没有行。

如何添加?

示例outpupt:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root xmlns:aid="http://xxxxxxxxxxxxxxxxxx">
<Section>BANDSAW BLADES</Section>
</Root>

希望明确。

1 个答案:

答案 0 :(得分:2)

  

这似乎不是dom的一部分

XML声明不会获得自己的节点,不会,但在Document对象中可以看到其中声明的属性:

>>> doc= minidom.parseString('<?xml version="1.0" encoding="utf-8" standalone="yes"?><a/>')
>>> doc.encoding
'utf-8'
>>> doc.standalone
True

序列化文档包含声明的standalone="yes"部分,但toxml()不包含。您可能认为这是一个错误,但实际上toxml()方法没有做出任何以适当的方式序列化XML声明的承诺。 (例如,除非你特别要求,否则你不会得到encoding。)

您可以自己负责撰写文件:

xml= []
xml.append('<?xml version="1.0" encoding="utf-8" standalone="yes"?>')
for child in doc.childNodes:
    xml.append(child.toxml())

确实需要XML声明吗?您使用的是默认版本和编码,并且由于您没有DOCTYPE,因此没有外部定义的实体,因此该文档本质上已经是独立的。根据{{​​3}}:“如果没有外部标记声明,则独立文档声明没有意义”。在我看来,你可以安全地省略它。