我很难让 python 循环/迭代 xml 文件。我能够加载文件并访问每个元素,但变量赋值(在内部循环内)似乎永远不会超过第一遍。下面的代码/输出如下。任何建设性的帮助表示赞赏。
srv_xmldoc = minidom.parse('servers.xml')
server_list = srv_xmldoc.getElementsByTagName('server')
for srv in server_list:
print srv #To verify that I'm moving down the list
attribute_list = srv_xmldoc.getElementsByTagName('element')
for e in attribute_list:
#Setup the server field entries
server = attribute_list[0].attributes['name'].value
username = attribute_list[1].attributes['name'].value
password = attribute_list[2].attributes['name'].value
delimeter = attribute_list[3].attributes['name'].value
remotePath =attribute_list[4].attributes['name'].value
fileType = attribute_list[5].attributes['name'].value
#Start processing this server entry
process_entry(server, username, password, delimeter, remotePath, fileType)
输出如下所示:
<DOM Element: server at 0x7f09410d6248>
192.168.1.6
<DOM Element: server at 0x7f09410d6d88>
192.168.1.6
<DOM Element: server at 0x7f09410d7908>
192.168.1.6
如您所见, srv 变量不断变化,但 IP 地址没有变化。
xml 文件的示例如下:
<servers>
<server>
<element name="192.168.1.6"></element>
<element name="server"></element>
<element name="blah0"></element>
<element name="|"></element>
<element name="/path/to/data/"></element>
<element name=".psv"></element>
</server>
<server>
<element name="192.168.1.7"></element>
<element name="server2"></element>
<element name="blah"></element>
<element name=";"></element>
<element name="/path/to/data/"></element>
<element name=".csv"></element>
</server>
<server>
<element name="192.168.1.8"></element>
<element name="server3"></element>
<element name="blah2"></element>
<element name=","></element>
<element name="/path/to/data/"></element>
<element name=".csv"></element>
</server>