我用Python的库dom minidom创建了一个xml文件。然而,我想创建我的xml文件没有prolog <?xml version="1.0"?>
。我用的是doc.writexml()
,你能给我几个引线吗?
你不能直接这么做。但是有两种简单的方法可以做到。
首先,去掉它并不难。例如:
xml = x.toxml()
with open('foo.xml', 'w') as f:
f.write(xml.partition('>')[2])
或者,如果您不想在内存中生成整个字符串,您可以编写一个文件包装器来吞下序言:
class SkipFirstWriter(object):
def __init__(self, f):
self.f = f
self.firstline = True
def write(self, buf):
if self.firstline:
if '>' in buf:
self.f.write(buf.partition('>')[2])
self.firstline = False
else:
self.f.write(buf)
with open('foo.xml', 'w') as f:
skipper = SkipFirstWriter(f)
x.writexml(skipper)
显然,吞下"直到第一个>
的所有内容"是一种有点黑客的方法来检测XML序言…但它是有效的。在实际的代码中,我可能会添加注释来解释这是有效的,以及为什么,但是请使用它。
或者,您可以依赖于document-without-prolog是文档的第一子元素这一事实,并执行以下操作:
with open('foo.xml', 'w') as f:
x.firstChild.writexml(f)