在Python中通过ID自动解析XML和订购节点属性

时间:2011-10-18 14:20:55

标签: python xml

我对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

bla bla bla ..当我打印它时,它只打印删除焦油?部分。所以,我被卡住了。

我的代码是:

from xml.dom import minidom
myfile = minidom.parse('data/config.xml')

testing = myfile.getElementsByTagName('param')
for node in testing:
    myvar = node.getAttribute('value')

1 个答案:

答案 0 :(得分:0)

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

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