永发信息网

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

答案:2  悬赏:80  手机版
解决时间 2021-12-22 22:37
如何用Python输出漂亮的xml文件
最佳答案
最近要用Python处理一个xml文件。平时习惯了用xml.etree.ElementTree,结果发现此库存在一些让人无法忍受的缺点:
1. 无法处理comment和cdata
2. 输出后的xml文件没有换行,没有缩进,十分难以阅读

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

[html] view plain copy
<pre name="code" class="html"><pre name="code" class="html"><root>
<host>192.168.0.1</host>
</root>

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

[html] view plain copy
<root>
<host>
192.168.0.1
</host>
</root>

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

[python] view plain copy
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)

先将Document输出到字符串,然后使用正则表达式将text中的空行去掉即可。
黑马程序员的PYthon是国内最早开设的真正人工智能课程。课程全面系统,紧跟时代潮流。
全部回答
word 文档本质上是压缩后的资源文件与 xml 文件,可以根据 open xml 标准去解析 xml 文件。要是嫌麻烦,用 python-docx 库似乎也可以完成这个。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
在金庸小说中,武当七侠的老三是谁?
江村社区居委会位置在什么地方啊,我要过去办
衣柜的价格一般是多少
若函数y=-2xm+2是正比例函数,则m的值是_____
如菩萨初心,不与后心俱什么意思?
别人QQ空间设权限了 怎么才能进去?
真诚求教各位几个问题:辟谷期间吃什么真
隼鸟保护级别
小米电话卡信号好不好!! 10分
解答题大量实验数据表明转Bt植物除含有Bt杀虫
如果换车想保留原车牌照,请问汽车牌照有时间
去英语单词怎么写
江宁村委会办公地址在什么地方?我要处理点事
----Be quick, please. I have to be there b
羡慕嫉妒恨的意思
推荐资讯
数列{an}满足:a1=2,an+1=4an-3,则a10等于A
请问鑫谷G1这个机箱能不能装得下利民的HR-02
现场收方是什么意思
The water supply has been cut off temporar
国际亲子游学活动有什么意义
已知|a|=2,|b|≠0,且关于x的方程x2+|a|x+a*
赛尔号战队最高等级是多少?
三火怎么读
大家手表什么颜色不会掉色和掉漆
mx2-6mx+9m=________
如图,已知∠COB=2∠AOC,OD平分∠AOB,∠COD=20
根据所给提示,完成句子。每空一词,含缩略词
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?