2016-08-19 98 views
1

我想在python中生成XML文件,但不缩进输出是直线。生成具有正确缩进的XML文件

from xml.etree.ElementTree import Element, SubElement, Comment, tostring 

name = str(request.POST.get('name')) 
top = Element('scenario') 
environment = SubElement(top, 'environment')   
cluster = SubElement(top, 'cluster') 
cluster.text=name 

我试图用漂亮的解析器,但它给我一个错误:“元素”对象有没有属性“读”

import xml.dom.minidom 

xml_p = xml.dom.minidom.parse(top) 
pretty_xml = xml_p.toprettyxml() 

是给解析器输入正确的格式?如果这是错误的方法,请提出另一种缩进方式。

回答

1

不能直接解析top这是一个Element(),你需要一个字符串,并在结果使用xml.dom.minidom.parseString()(这就是为什么你应该导入tostring您目前没有使用。):

import xml.dom.minidom 

xml_p = xml.dom.minidom.parseString(tostring(top)) 
pretty_xml = xml_p.toprettyxml() 
print(pretty_xml) 

给出:

<?xml version="1.0" ?> 
<scenario> 
    <environment/> 
    <cluster>xyz</cluster> 
</scenario> 
+0

谢谢!有效.. –