getElementsByTagName代码优化

2024-10-04 09:29:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用xml文档.xml让python解析一个xml。我必须从几个标签中提取元素并处理它们。场景如下:
我有两种标记类型,在xml中使用getElementsByTagName方法。我必须得到这些元素的列表并逐一处理。第一种方法如下:

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循环是很乏味的。我正在寻找一种方法来简化这件事。你知道吗


Tags: path方法in标记元素列表forxml
1条回答
网友
1楼 · 发布于 2024-10-04 09:29:38

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

希望有帮助。你知道吗

相关问题 更多 >