2016-08-19 28 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

謝謝!有效.. –