使用元素树解析XML(Python)
我正在学习如何使用ElementTree,在解析XML时遇到了一些问题,如下所示。我最终想创建一个字典,其中键是函数id,值是被调用方id的列表(例如,{'1':[20,22]},{'3':[10,30,20,92]}),但我很难理解如何迭代每个函数并访问id和被调用方属性。我一直在尝试使用findall(),但没有成功,所以我想知道是否可以得到一些帮助。谢谢使用元素树解析XML(Python),python,xml,elementtree,Python,Xml,Elementtree,我正在学习如何使用ElementTree,在解析XML时遇到了一些问题,如下所示。我最终想创建一个字典,其中键是函数id,值是被调用方id的列表(例如,{'1':[20,22]},{'3':[10,30,20,92]}),但我很难理解如何迭代每个函数并访问id和被调用方属性。我一直在尝试使用findall(),但没有成功,所以我想知道是否可以得到一些帮助。谢谢 <?xml version="1.0" encoding="utf-8"?> <
<?xml version="1.0" encoding="utf-8"?>
<myXML>
<version>2</version>
<functions>
<function>
<id>1</id>
<callee>20</callee>
<callee>22</callee>
</function>
<function>
<id>3</id>
<callee>10</callee>
<callee>30</callee>
<callee>20</callee>
<callee>92</callee>
</function>
</functions>
</myXML>
2.
1.
20
22
3.
10
30
20
92
尝试以下方法:
import xml.etree.ElementTree as ET
calls = """[your xml above]"""
doc = ET.fromstring(calls)
calls_dict = {}
funcs = doc.findall('.//function')
for func in funcs:
id = func.find('./id').text
callees = [call.text for call in func.findall('.//callee')]
calls_dict[id]=callees
for a,b in calls_dict.items():
print(a,b)
输出:
1 ['20', '22']
3 ['10', '30', '20', '92']
非常感谢。成功了@印度支持很高兴听到!