用Python编写易读的XML

2024-09-18 18:44:34 发布

您现在位置:Python中文网/ 问答频道 /正文

除了自己创建一个方法来使用python编写易于阅读的XML之外,还有其他方法吗?XML文件.write(XmlToxDom())确实创建了正确的xml,但是读取它们非常困难。我尝试过rettyxml,但似乎效果不大。e、 g.以下是我认为的可读xml:

<myroot>
    <ent1
        att1="val1"
        att2="val2"
        att3="val3"
    />
    <ent2>
        <ent3
            att1="val1"
            att2="val2"
        />
    </ent2>
</myroot>

来自以下回答的解决方案摘要:
1) 如果您只是偶尔需要读取它以进行调试,那么在编写时不要格式化xml,而是使用xmlint或xml编辑器来读取它。或
2) 用一个像靓汤一样的图书馆。或
3) 编写自己的方法


Tags: 文件方法xmlwrite效果val1val2att1
3条回答
print lxml.etree.tostring(root_node, pretty_print=True)

不幸的是,人类对XML的可读性并不是一个设计目标。相反,BeautifulStoneSoup则努力美化XML。虽然不是很好,但总比没有强。在

如果您使用的是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()

相关问题 更多 >