我使用xml.dom.minidom for python来解析一个xml。我必须从几个标签中获取元素并处理它们。场景是这样的:
我有两种标签类型,在我使用getElementsByTagName方法的xml中。我必须得到这些元素的列表并逐个处理它。第一种方法如下:
for intDirNode in dom.getElementsByTagName('IntDir'):
path = intDirNode.childNodes[0].nodeValue
print path
for outNode in dom.getElementsByTagName('Outputs'):
path = outNode.childNodes[0].nodeValue
print path
现在我想把我从.getElementsByTagName()得到的这两个列表合并成一个循环,这样我的工作就可以在一个简单的循环中完成,如下所示:
for Node in [dom.getElementsByTagName('IntDir'), dom.getElementsByTagName('Outputs')]:
path = Node.childNodes[0].nodeValue
print path
但上述代码不起作用。有没有办法做到这一点?
用例就是在更大的图片中我想从xml中获取15个这样的标签,并且为它们编写15个不同的for循环是单调乏味的。我正在寻找简化这一点。
答案 0 :(得分:2)
getElementsByTagName()
返回一个列表,只需将它们组合起来:
nodes = dom.getElementsByTagName('IntDir') + dom.getElementsByTagName('Outputs')
for node in nodes:
...
从更大的角度来看,你可能想要像这样做:
node_names = ['IntDir', 'Outputs', ...]
nodes = []
for node_name in node_names:
nodes += dom.getElementsByTagName(node_name)
for node in nodes:
...
希望有所帮助。