如何用Python输出漂亮的xml文件

最近要用python处理一个xml文件。平时习惯了用xml.etree.ElementTree,结果发现此库存在一些让人无法忍受的缺点:

1. 无法处理comment和cdata

2. 输出后的xml文件没有换行,没有缩进,十分难以阅读


于是尝试这用xml.dom.minidom,前两个问题几乎全部解决了。唯一让人看着不爽的是minidom对于text的处理。比如,我期待的xml输入如下:


        192.168.0.1
 
  
 
  
但是使用xml.dom.minidom.Document.writexml后,输出的结果却是这样的:


        
                192.168.0.1
        


开始的时候,我考虑重写Document.writexml函数,觉得太麻烦,有用牛刀杀鸡之感。后来想想,其实自己的需求非常简单,只是需要对Document的输出结果做个二次处理即可。使用python的正则表达式库就可以实现:

    def save_xml(self, file_name):
        xml_str = self.m_dom.toprettyxml(indent="    ")
        repl = lambda x: ">%s\n\s*([^<]+)

先将Document输出到字符串,然后使用正则表达式将text中的空行去掉即可。


你可能感兴趣的:(python)