解析XML并在Python中按ID自动排序节点属性



我有一个关于Python, XML和id的问题。

我的XML是:

<settings>
    <plugin id="1">
            <param id="1" name="mailsend" value="Send Mail" />
            <param id="2" name="mailfunc" value="func/sendmail.py" />
            <param id="3" name="mailfunccount" value="3" />
            <param id="4" name="mailto" value="Mail to" />
            <param id="5" name="mailsub" value="Mail subject" />
            <param id="6" name="mailcont" value="Mail content" />
            <param id="7" name="senderconfigcount" value="2" />
            <param id="8" name="senderid" value="somemail@gmail.com" />
            <param id="9" name="senderpw" value="somepasswd" />
    </plugin>
    <plugin id="2">
            <param id="1" name="taropen" value="Open Tarfile" />
            <param id="2" name="tarfunc" value="func/tarac.py" />
            <param id="3" name="tarfunccount" value="4" />
            <param id="4" name="tarname" value="Tar name" />
            <param id="5" name="tarloc" value="Tar location" />
            <param id="6" name="tardest" value="Tar destination" />
            <param id="7" name="tarstat" value="Delete tar?" />
    </plugin>
</settings>

但是我不知道如何在我的stackoverflow主题中做这件事。

我想这样排序:

Send Mail
func/sendmail.py
3
Mail to
Mail subject
Mail content

咩咩咩…当我打印它时,它只打印Delete tar?部分。所以,我被卡住了。

我的代码是:
from xml.dom import minidom
myfile = minidom.parse('data/config.xml')
testing = myfile.getElementsByTagName('param')
for node in testing:
    myvar = node.getAttribute('value')

xml显然是嵌套的,所以您的代码需要遵循嵌套。语句需要两个嵌套:

for plugin in myfile.getElementsByTagName('plugin'):
    print "Plugin "+plugin.getAttribute('id')
    for param in plugin.getElementsByTagName('param'):
        print param.getAttribute('value')
    print

最新更新