之前也没用过 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.cElementTree.tostring 函数,将 encoding 参数传入 False 即可解决
|