使用python创建一个简单的XML文件
使用python创建一个简单的XML文件
如果我想在Python中创建一个简单的XML文件,我有哪些选择?(从库方面考虑)
我想要的XML文件是这样的:
some value1 some vlaue2
admin 更改状态以发布 2023年5月24日
lxml库 提供了一种非常方便的XML生成语法,称为 E-factory。以下是我制作你提供的示例的方法:
#!/usr/bin/python import lxml.etree import lxml.builder E = lxml.builder.ElementMaker() ROOT = E.root DOC = E.doc FIELD1 = E.field1 FIELD2 = E.field2 the_doc = ROOT( DOC( FIELD1('some value1', name='blah'), FIELD2('some value2', name='asdfasd'), ) ) print lxml.etree.tostring(the_doc, pretty_print=True)
输出结果:
some value1 some value2
它还支持向已有节点添加内容,例如在上述之后,您可以添加:
the_doc.append(FIELD2('another value again', name='hithere'))
现在,最受欢迎(也是最简单)的选项是ElementTree API,自Python 2.5起已经包含在标准库中。\n可以使用的选项包括:\n
- \n
- ElementTree(ElementTree的基本纯Python实现。自2.5以来一直是标准库的一部分)
- cElementTree(ElementTree的优化C实现。自2.5以来也被提供在标准库中。自3.3起被弃用并自动合并成常规ElementTree)
- LXML(基于libxml2。提供ElementTree API的富集子集以及XPath、CSS选择器等更多功能)
\n
\n
\n
\n下面是一个使用在标准库中的cElementTree生成示例文档的示例:\n
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")
\n我已经测试过它,它可以工作,但我假设空格不是很重要。如果您需要“prettyprint”缩进,请告诉我,我会查找如何实现它。(可能是一个特定于LXML的选项。我不经常使用stdlib实现)\n进一步阅读,这里有一些有用的链接:\n
- \n
- Python标准库中的实现API文档
- 入门教程(作者原始网站)
- LXML etree教程(包括从所有主要ElementTree实现中加载最佳可用选项的示例代码)
\n
\n
\n
\n最后需要注意的是,无论是cElementTree还是LXML,都足够快于满足您的需求(两者都是优化的C代码),但如果您需要在需要挤压出每一个性能的情况下,LXML网站上的基准测试表明:\n
- \n
- LXML在串行化(生成)XML方面明显获胜
- 由于实现了正确的父级遍历,LXML解析略慢于cElementTree。
\n
\n