① 如何用Python输出漂亮的xml文件
最近要用Python处理一个xml文件。平时习惯了用xml.etree.ElementTree,结果发现此库存在一些让人无法忍受的缺点:
1. 无法处理comment和cdata
2. 输出后的xml文件没有换行,没有缩进,十分难以阅读
于是尝试这用xml.dom.minidom,前两个问题几乎全部解决了。唯一让人看着不爽的是minidom对于text的处理。比如,我期待的xml输入如下:
[html] view plain
<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
<root>
<host>
192.168.0.1
</host>
</root>
开始的时候,我考虑重写Document.writexml函数,觉得太麻烦,有用牛刀杀鸡之感。后来想想,其实自己的需求非常简单,只是需要对Document的输出结果做个二次处理即可。使用python的正则表达式库就可以实现:
[python] view plain
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是国内最早开设的真正人工智能课程。课程全面系统,紧跟时代潮流。
② python怎么读取xml文件
解析XML文件是处理XML数据的第一步。ET提供了两种主要方式来解析XML文件:直接从文件解析或从字符串解析。
从文件解析:
这段代码会加载example.xml文件,并获取其根元素。
从字符串解析:
这段代码会解析一个包含XML数据的字符串。
读取、解析和获取元素:
获取了根元素后,你可以遍历XML树并获取你感兴趣的数据。
这段代码会查找所有的元素,并打印出每个国家的名称、排名和年份。
修改XML文件:
你可以修改XML树的元素和属性,然后将修改后的树写回文件。
添加元素:这段代码创建了一个新的元素,并将其添加到树的根下,然后将修改后的树保存到一个新文件。
修改和删除元素:这段代码展示了如何修改和删除XML文件中的元素。
创建XML文件:
你可以从头开始创建一个新的XML文件。
这段代码创建了一个新的XML文档,并将其保存到new.xml文件中。