之前也没用过 py 来生成 xml。一般都是 lxml 解析。
然后今天代码用内置的 xml 模块写好了,生成的时候才发现个坑,塔喵的 xml 模块生成的 xml 文件硬是有个 <?xml version="1.0" ?>
头。 再看了下 xml 模块的源码。。
def writexml(self, writer, indent="", addindent="", newl="", encoding = None): if encoding is None: writer.write('<?xml version="1.0" ?>'+newl) else: writer.write('<?xml version="1.0" encoding="%s"?>%s' % (encoding, newl)) for node in self.childNodes: node.writexml(writer, indent, addindent, newl)
之后查了下 lxml 生成的没头,这个 xml 生成的一定有头。但是又有点懒得用 lxml 再重写一次了(因为结点有点多)。所以有什么办法可以去掉这个<?xml version="1.0" ?>
头不?
比如说 lxml 有什么美化 xml 输出的方法之类的不,因为这玩意不仅多了头,连下面的行都有自带多个 tab,单纯用文件形式打开,再 replace 掉开头一行感觉也不太对。
![]() | 1 izoabr 2019-09-05 18:44:59 +08:00 你写完再去 replace 一下不就得了,或者干脆把这个库复制一份改个名,把这几行注释掉再当自有库用。 |
2 MonoLogueChi 2019-09-05 18:50:56 +08:00 via Android xml 又不是给人看的,只要能正常解析,管他里面有啥呢 Python 我不太懂,你看一下这个函数输出的是什么,要是 string 类型的话就替换再保存应该就可以了吧。直接是 stream 类型的话,那就读出来替换再保存。思路应该是这样的吧 |
![]() | 3 guiqiqi 2019-09-05 21:18:21 +08:00 via iPhone 用 xml.tree.ElementTree.tostring 函数,将 encoding 参数传入 False 即可解决 |