小编典典

使用 python 创建一个简单的 XML 文件

all

如果我想在 python 中创建一个简单的 XML 文件,我有什么选择?(图书馆方面)

我想要的 xml 看起来像:

<root>
 <doc>
     <field1 name="blah">some value1</field1>
     <field2 name="asdfasd">some vlaue2</field2>
 </doc>

</root>

阅读 156

收藏
2022-07-09

共1个答案

小编典典

如今,最流行(也非常简单)的选项是ElementTree
API
,它自 Python
2.5 起就包含在标准库中。

可用的选项是:

  • ElementTree (ElementTree 的基本纯 Python 实现。自 2.5 起成为标准库的一部分)
  • cElementTree(ElementTree 的优化 C 实现。自 2.5 起也在标准库中提供。自 3.3 起已弃用并作为自动的东西折叠到常规 ElementTree 中。)
  • LXML(基于 libxml2。提供丰富的 ElementTree API 超集以及 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 实现)

为了进一步阅读,这里有一些有用的链接:

最后一点,cElementTree 或 LXML 应该足够快以满足您的所有需求(两者都是优化的 C
代码),但如果您处于需要挤出最后一点性能的情况,基准测试LXML 站点表明:

  • LXML 明显胜过序列化(生成)XML
  • 作为实现正确父遍历的副作用,LXML 在解析方面比 cElementTree 慢一些。
2022-07-09