我正在学习如何使用ElementTree,但在解析XML时遇到了一些麻烦,如下所示。我最终想创建一个字典,其中的键是函数ID的值,值是被调用者ID的列表(例如{'1':[20,22]},{'3':[10,30, 20,92]}),但是我在弄清楚如何遍历每个函数以及访问id和callee属性时遇到了麻烦。我一直在尝试使用findall(),但一直没有成功,所以我想知道是否可以得到一些帮助。谢谢!
<?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>
尝试这样的事情:
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']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句