使用python创建简单的XML文件

如果我想用python创建一个简单的XML文件,我的选项是什么?(图书馆方面)

我想要的xml如下所示:

<根>
<doc>
<field1 name=“blah”>一些价值1&lt/字段1>
<field2 name=“asdfasd”>一些vlaue2&lt/字段2>
&lt/doc>
&lt/根>

如今,最流行(也是非常简单)的选项是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慢一点

发表评论