用Python生成xml文件
下图是性能测试的结果。我的问题之一是:如何将结果传输到XML文件中 我一直在尝试文件编写方法。但是如果我需要解析的数据是海量的呢?有没有一种方法或插件可以用更智能的方式完成 到目前为止,我的代码是:用Python生成xml文件,python,xml,python-2.7,xml-parsing,ipython,Python,Xml,Python 2.7,Xml Parsing,Ipython,下图是性能测试的结果。我的问题之一是:如何将结果传输到XML文件中 我一直在尝试文件编写方法。但是如果我需要解析的数据是海量的呢?有没有一种方法或插件可以用更智能的方式完成 到目前为止,我的代码是: def generate_xml(jank_perc): with open('jankyresult.xml','a') as f: f.write('<?xml version="1.0" ?>\n') f.write("<root>\n")
def generate_xml(jank_perc):
with open('jankyresult.xml','a') as f:
f.write('<?xml version="1.0" ?>\n')
f.write("<root>\n")
f.write(" <doc>\n")
f.write(" <Jankyframes>" + jank_perc + '%' + "</Jankyframes>\n")
f.write(" </doc>\n")
f.write("</root>\n")
def生成_xml(jank_perc):
以open('jankyrult.xml','a')作为f:
f、 写入('\n')
f、 写入(“\n”)
f、 写入(“\n”)
f、 写入(“+jank_perc+'%'+“\n”)
f、 写入(“\n”)
f、 写入(“\n”)
我不想手动创建。我希望有一个更聪明的方法。谢谢你的回答 看看图书馆:
以Python方式生成HTML或XML。纯python替代web模板引擎。可以用默认值和错误消息填充HTML表单
下面是一个基于您的代码示例的示例:
doc, tag, text = Doc().tagtext()
doc.asis('<?xml version="1.0"?>')
with tag('root'):
with tag('doc'):
with tag('Jankyframes'):
text(jank_perc + '%')
with open('jankyresult.xml','a') as f:
f.write(doc.getvalue())
doc,tag,text=doc().tagtext()
asis文件(“”)
带标记('root'):
带标记('doc'):
带有标记('Jankyframes'):
文本(jank_perc+'%')
以open('jankyrult.xml','a')作为f:
f、 写入(doc.getvalue())
根据您获取输入数据的方式(例如列表
或dict
),您可以对其进行迭代并将结果写入XML,同时保持代码可读性。使用此选项。例如,
from xml.etree import ElementTree, cElementTree
from xml.dom import minidom
root = ElementTree.Element('root')
child1 = ElementTree.SubElement(root, 'doc')
child1_1 = ElementTree.SubElement(child1, 'Jankyframes')
child1_1.text = jank_perc
print ElementTree.tostring(root)
tree = cElementTree.ElementTree(root) # wrap it in an ElementTree instance, and save as XML
t = minidom.parseString(ElementTree.tostring(root)).toprettyxml() # Since ElementTree write() has no pretty printing support, used minidom to beautify the xml.
tree1 = ElementTree.ElementTree(ElementTree.fromstring(t))
tree1.write("filename.xml",encoding='utf-8', xml_declaration=True)
你可以使用jinja2“tree=cElementTree.ElementTree(root)”你能给我解释一下这个代码吗?谢谢,我真的不知道它为什么会在这里。
cElementTree模块是ElementTreeAPI的C实现,针对快速解析和低内存使用进行了优化。在典型的文档中,cElementTree比Python版本的ElementTree快15-20倍,并且使用的内存减少了2-5倍
,根据effbot.org/zone/cElementTree.htm在代码前面添加了注释。感谢您回答我的问题。我注意到ElementTree的用法。