我正在使用 Python 的 xml.dom.minidom,但我认为这个问题对任何 DOM 解析器都是有效的。
我的原始文件开头有这样一行:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
这似乎不是 dom 的一部分,所以当我执行类似 dom.toxml() 的操作时,生成的字符串在开头没有一行。
如何添加?
示例输出:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root xmlns:aid="http://xxxxxxxxxxxxxxxxxx">
<Section>BANDSAW BLADES</Section>
</Root>
希望清楚。
最佳答案
This doesn't seem to be part of the 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()
方法并没有 promise 以适当的方式序列化 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,因此不可能有外部定义的实体,因此该文档本质上已经是独立的。根据 XML standard :“如果没有外部标记声明,则独立文档声明没有意义”。在我看来,您可以安全地完全忽略它。
关于python - 如何将xml header 添加到dom对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3982887/