在Python中编写易读的XML
有没有其他方法可以用Python写出容易阅读的XML,而不是自己创建一个方法?用xMLFile.write(xmlDom.toxml())确实能生成正确的XML,但读起来挺困难的。我试过用prettyxml,但感觉效果不大。例如,下面这个我认为是人类可读的XML:
<myroot>
<ent1
att1="val1"
att2="val2"
att3="val3"
/>
<ent2>
<ent3
att1="val1"
att2="val2"
/>
</ent2>
</myroot>
下面的回复总结了一些解决方案:
1) 如果你只是偶尔需要查看XML来调试,那就不用在写的时候格式化XML,可以用xmllint或者XML编辑器来读取。或者
2) 使用像Beautiful Soup这样的库。或者
3) 自己写一个方法。
5 个回答
1
我觉得用Python自带的功能来实现这个,最好的方法就是这个回答里提到的:https://stackoverflow.com/a/1206856。
import xml.dom.minidom
xml = xml.dom.minidom.parse(xml_fname) # or xml.dom.minidom.parseString(xml_string)
pretty_xml_as_string = xml.toprettyxml()
1
如果你在使用elementalTree,这段代码就可以正常运行。
XMLtext= ET.tostringlist(root)
OutputStr=''
level=-1
for t in XMLtext:
if t[0]=='<':
level=level+1
if t[0:2]=='</':
#remove the added level because of '<'
level=level-1
if t[-1]=='"' or t[0]=='<' or t[-2:]=='/>':
t="\n"+" "*level+t
if t[-2:]=='/>' or t[level*4+1:level*4+3]=='</': #end of block
level=level-1
if t[-1:]=='>':
t=t+'\n'
OutputStr=OutputStr+t
f = open("test.xml", "w")
f.write(OutputStr)
f.close()
6
print lxml.etree.tostring(root_node, pretty_print=True)
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。