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

发布于 2021-02-02 23:15:34

如果我想在python中创建一个简单的XML文件,该怎么办?(明智的)

我想要的xml看起来像:

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

</root>
关注者
0
被浏览
109
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    如今,最流行(且非常简单)的选项是ElementTree API,该元素自Python 2.5起已包含在标准库中。

    可用的选项有:

    • ElementTree(ElementTree的基本,纯Python实现。自2.5以来是标准库的一部分)
    • cElementTree(ElementTree的优化C实现。从2.5开始在标准库中提供)
    • LXML(基于libxml2。提供ElementTree API的丰富超集以及XPath,CSS选择器等)

    这是一个如何使用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实现)

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

    • 适用于Python标准库的API文档
    • 入门教程(来自原始作者的网站)
    • LXML etree教程。(带有示例代码,用于从所有主要ElementTree实现中加载最佳可用选项)
    • 最后一点,cElementTree或LXML都应该足够快以满足您的所有需求(都是经过优化的C代码),但是在这种情况下,您需要充分利用性能的最后一点, LXML网站指示:
    • LXML显然在序列化(生成)XML方面胜出
    • 作为实现正确的父遍历的副作用,LXML的解析比cElementTree慢一些。


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看