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

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

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

我想要的XML看起来像:

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


慕桂英3389331
浏览 2471回答 3
3回答

杨魅力

现在,最受欢迎(也非常简单)的选项是元素树API,它从Python2.5开始就包含在标准库中。可供选择的办法如下:ElementTree(ElementTree的基本、纯Python实现)标准库的一部分,自2.5以来)cElementTree(ElementTree的优化C实现)。从2.5开始也在标准库中提供)LXML(基于libxml 2)。提供了丰富的ElementTreeAPI超集,以及XPath、CSS选择器等等)下面是如何使用in-stdlib cElementTree生成示例文档的示例:import&nbsp;xml.etree.cElementTree&nbsp;as&nbsp;ET root&nbsp;=&nbsp;ET.Element("root")doc&nbsp;=&nbsp;ET.SubElement(root,&nbsp;"doc")ET.SubElement(doc,&nbsp;"field1",&nbsp;name="blah").text&nbsp;=&nbsp;"some&nbsp;value1" ET.SubElement(doc,&nbsp;"field2",&nbsp;name="asdfasd").text&nbsp;=&nbsp;"some&nbsp;vlaue2"tree&nbsp;=&nbsp;ET.ElementTree(root)tree.write("filename.xml")我已经测试过它了,它可以工作,但我假设空白并不显着。如果您需要“prettyprint”缩进,请告诉我,我将查找如何做到这一点。(它可能是一个特定于LXML的选项。我不常使用stdlib实现)为了进一步阅读,这里有一些有用的链接:用于Python标准库中实现的API文档入门教程(来自原作者的网站)LXML etree教程..(用示例代码从所有主要的ElementTree实现中加载最佳可用选项)最后要注意的是,cElementTree或LXML应该足够快,以满足您的所有需求(都是优化的C代码),但是如果您需要挤出最后一点性能,LXML站点上的基准测试表明:LXML显然是序列化(生成)XML的赢家作为实现正确的父遍历的副作用,LXML在解析方面比cElementTree慢一些。

墨色风雨

这个lxml库包含一个非常方便的xml生成语法,称为电子工厂..下面是我给出的例子:#!/usr/bin/pythonimport&nbsp;lxml.etreeimport&nbsp;lxml.builder&nbsp;&nbsp;&nbsp;&nbsp; E&nbsp;=&nbsp;lxml.builder.ElementMaker()ROOT&nbsp;=&nbsp;E.root DOC&nbsp;=&nbsp;E.doc FIELD1&nbsp;=&nbsp;E.field1 FIELD2&nbsp;=&nbsp;E.field2 the_doc&nbsp;=&nbsp;ROOT( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOC( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIELD1('some&nbsp;value1',&nbsp;name='blah'), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIELD2('some&nbsp;value2',&nbsp;name='asdfasd'), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;print&nbsp;lxml.etree.tostring(the_doc,&nbsp;pretty_print=True)产出:<root> &nbsp;&nbsp;<doc> &nbsp;&nbsp;&nbsp;&nbsp;<field1&nbsp;name="blah">some&nbsp;value1</field1> &nbsp;&nbsp;&nbsp;&nbsp;<field2&nbsp;name="asdfasd">some&nbsp;value2</field2> &nbsp;&nbsp;</doc></root>它还支持向已经生成的节点添加内容,例如,在上面您可以这样说之后。the_doc.append(FIELD2('another&nbsp;value&nbsp;again',&nbsp;name='hithere'))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python