最近要用python处理一个xml文件。平时习惯了用xml.etree.ElementTree,结果发现此库存在一些让人无法忍受的缺点:
1. 无法处理comment和cdata
2. 输出后的xml文件没有换行,没有缩进,十分难以阅读
于是尝试这用xml.dom.minidom,前两个问题几乎全部解决了。唯一让人看着不爽的是minidom对于text的处理。比如,我期待的xml输入如下:
<pre name="code" class="html"><pre name="code" class="html"><root> <host>192.168.0.1</host> </root>
<root> <host> 192.168.0.1 </host> </root>
def save_xml(self, file_name): xml_str = self.m_dom.toprettyxml(indent=" ") repl = lambda x: ">%s</" % x.group(1).strip() if len(x.group(1).strip()) != 0 else x.group(0) pretty_str = re.sub(r'>\n\s*([^<]+)</', repl, xml_str) open(file_name, 'w').write(pretty_str)