现在,最受欢迎(也非常简单)的选项是元素树API,它从Python2.5开始就包含在标准库中。
可供选择的办法如下:ElementTree(ElementTree的基本、纯Python实现)标准库的一部分,自2.5以来)
cElementTree(ElementTree的优化C实现)。从2.5开始也在标准库中提供)
LXML(基于libxml 2)。提供了丰富的ElementTreeAPI超集,以及XPath、CSS选择器等等)
下面是如何使用in-stdlib cElementTree生成示例文档的示例:import xml.etree.cElementTree as ET
root = ET.Element("root")doc = ET.SubElement(root, "doc")ET.SubElement(doc, "field1", name="blah").text = "some value1"
ET.SubElement(doc, "field2", name="asdfasd").text = "some vlaue2"tree = ET.ElementTree(root)tree.write("filename.xml")
我已经测试过它了,它可以工作,但我假设空白并不显着。如果您需要“prettyprint”缩进,请告诉我,我将查找如何做到这一点。(它可能是一个特定于LXML的选项。我不常使用stdlib实现)
为了进一步阅读,这里有一些有用的链接:(来自原作者的网站)
..(用示例代码从所有主要的ElementTree实现中加载最佳可用选项)
最后要注意的是,cElementTree或LXML应该足够快,以满足您的所有需求(都是优化的C代码),但是如果您需要挤出最后一点性能,LXML站点上的基准测试表明:LXML显然是序列化(生成)XML的赢家
作为实现正确的父遍历的副作用,LXML在解析方面比cElementTree慢一些。