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

33 浏览
0 Comments

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

如果我想在Python中创建一个简单的XML文件,我有哪些选择?(从库方面考虑)

我想要的XML文件是这样的:

 
     some value1
     some vlaue2
 

admin 更改状态以发布 2023年5月24日
0
0 Comments

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'))

0
0 Comments

现在,最受欢迎(也是最简单)的选项是ElementTree API,自Python 2.5起已经包含在标准库中。\n可以使用的选项包括:\n

    \n

  • ElementTree(ElementTree的基本纯Python实现。自2.5以来一直是标准库的一部分)
  • \n

  • cElementTree(ElementTree的优化C实现。自2.5以来也被提供在标准库中。自3.3起被弃用并自动合并成常规ElementTree)
  • \n

  • LXML(基于libxml2。提供ElementTree API的富集子集以及XPath、CSS选择器等更多功能)
  • \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最后需要注意的是,无论是cElementTree还是LXML,都足够快于满足您的需求(两者都是优化的C代码),但如果您需要在需要挤压出每一个性能的情况下,LXML网站上的基准测试表明:\n

    \n

  • LXML在串行化(生成)XML方面明显获胜
  • \n

  • 由于实现了正确的父级遍历,LXML解析略慢于cElementTree。
  • \n

0