如果我想用python创建一个简单的XML文件,我的选项是什么?(图书馆方面)
我想要的xml如下所示:
<;根>;
<;doc>;
<;field1 name=“blah”>;一些价值1</字段1>;
<;field2 name=“asdfasd”>;一些vlaue2</字段2>;
</doc>;
</根>;
如今,最流行(也是非常简单)的选项是ElementTreeAPI,
自Python 2.5以来,它就包含在标准库中
这方面的可用选项有:
- ElementTree(ElementTree的基本纯Python实现。自2.5版以来一直是标准库的一部分)
- cElementTree(ElementTree的优化C实现。自2.5版起,也在标准库中提供。从3.3版起,不再推荐并自动折叠到常规ElementTree中。)
- LXML(基于libxml2。提供了丰富的ElementTreeAPI超集以及XPath、CSS选择器等)
下面是一个如何使用in-stdlib cElementTree生成示例文档的示例:
将xml.etree.cElementTree作为ET导入
root=ET.Element(“root”)
doc=ET.SubElement(根,“doc”)
ET.SubElement(doc,“field1”,name=";blah";).text=";一些价值1“;
ET.SubElement(doc,“field2”,name=“asdfasd”).text=“文本”;一些vlaue2“;
tree=ET.ElementTree(根)
write(";filename.xml";)
我已经对它进行了测试,它是有效的,但我假设空白并不重要。如果你需要;“预印”;好的,让我知道,我会查一下怎么做。(这可能是一个特定于LXML的选项。我不太使用stdlib实现)
为了进一步阅读,这里有一些有用的链接:
- Python标准库中实现的API文档
- 介绍性教程(来自原作者的网站)
- LXML etree教程。(带有用于从所有主要ElementTree实现加载最佳可用选项的示例代码)
最后请注意,cElementTree或LXML都应该足够快,满足您的所有需求(都是优化的C代码),但如果您需要挤出最后一点性能,LXML站点上的基准测试表明:
- LXML显然在序列化(生成)XML方面获胜
- 作为实现正确的父遍历的副作用,LXML在解析方面比cElementTree慢一点