gpt4 book ai didi

python - getElementsByTagName 代码优化

转载 作者:行者123 更新时间:2023-12-01 05:21:24 25 4
gpt4 key购买 nike

我正在使用 python 的 xml.dom.minidom 来解析一个 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 循环是很乏味的。我正在寻找方法来简化此操作。

最佳答案

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:
...

希望有帮助。

关于python - getElementsByTagName 代码优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com