如果您想在带有ElementTree的XML文件中保留注释,可以使用来自http://effbot.org/zone/element-pi.htm的PIParser
如果我有一个包含
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- This is a comment -->
<root>
<foo>Hello World</foo>
</root>
<!-- That's all, folks -->
然后这两条评论将被保留
PIParser将xml包装在另一个<document>
节点中,因此可以包含根节点之外的任何注释。这两个注释只是<document>
中包含的另外两个元素
但是我应该如何输出xml呢?我使用这样的代码输出<document>
的内容,而不输出<document>
标记本身:
file.write('<?xml version="1.0" encoding="%s"?>\n' % encoding)
doc = tree.getroot()
for child in doc:
file.write(ET.tostring(child, encoding, method))
file.write("\n")
现在,如果编码是“utf-8”,这似乎是可行的。tostring()方法不会输出这些<?xml...?>
行中的一行,可能是因为utf-8是默认值。这就是我用上面的file.write()显式编写<?xml...?>
的原因。但是如果编码是“iso-8859-1”,那么tostring()在调用它的每个元素的开头放一个<?xml version="1.0" encoding="iso-8859-1"?>
!因此,我在根节点之外的每个注释前面都有一个注释,在根节点本身前面也有一个注释。我不想那样,我只想在文件的最上面放一个。但是我没有像上面那样得到xml,而是得到
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml version='1.0' encoding='iso-8859-1'?>
<!-- This is a comment -->
<?xml version='1.0' encoding='iso-8859-1'?>
<root>
<foo>Hello World</foo>
</root>
<?xml version='1.0' encoding='iso-8859-1'?>
<!-- That's all, folks -->
如何控制tostring()是否输出<?xml...?>
?或者,我应该换一种方式吗
目前没有回答
相关问题 更多 >
编程相关推荐