为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英3389331 2019-07-10 10:26:35
使用python创建一个简单的xml文件如果我想在python中创建一个简单的XML文件,我的选择是什么?(图书馆方面)我想要的XML看起来像:<root>  <doc>      <field1 name="blah">some value1</field1>      <field2 name="asdfasd">some vlaue2</field2>  </doc></root>
查看完整描述

3 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

现在,最受欢迎(也非常简单)的选项是元素树API,它从Python2.5开始就包含在标准库中。

可供选择的办法如下:

  • ElementTree(ElementTree的基本、纯Python实现)标准库的一部分,自2.5以来)
  • cElementTree(ElementTree的优化C实现)。从2.5开始也在标准库中提供)
  • LXML(基于libxml 2)。提供了丰富的ElementTreeAPI超集,以及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慢一些。


查看完整回答
反对 回复 2019-07-10
?
墨色风雨

TA贡献1853条经验 获得超6个赞

这个lxml库包含一个非常方便的xml生成语法,称为电子工厂..下面是我给出的例子:

#!/usr/bin/pythonimport lxml.etreeimport 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)

产出:

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

它还支持向已经生成的节点添加内容,例如,在上面您可以这样说之后。

the_doc.append(FIELD2('another value again', name='hithere'))


查看完整回答
反对 回复 2019-07-10
  • 3 回答
  • 0 关注
  • 2469 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信