在python 2.6.6中获取子级的子级值
我有下面这样的XML,希望提取带有附件名称的报警id在python 2.6.6中获取子级的子级值,python,elementtree,Python,Elementtree,我有下面这样的XML,希望提取带有附件名称的报警id 2018-06-19 08:10:05.0 UTC 2018-06-19 08:10:05.0 UTC 1234567 50 2018-05-19 09:10:05.0 UTC 2018-05-19 08:10:05.0 UTC 1234567 50 2018-05-19 09:10:05.0 UTC 2018-05-19 08:10:05.0 UTC 1234567 50 已尝试的代码: import xml.etree.Element
2018-06-19 08:10:05.0 UTC
2018-06-19 08:10:05.0 UTC
1234567
50
2018-05-19 09:10:05.0 UTC
2018-05-19 08:10:05.0 UTC
1234567
50
2018-05-19 09:10:05.0 UTC
2018-05-19 08:10:05.0 UTC
1234567
50
已尝试的代码:
import xml.etree.ElementTree as ET
import gzip
input=gzip.open('input-xml.gz','r')
tree=ET.parse(input)
root=tree.getroot()
for lsofals in root.findall("./alarm/"):
print lsofals.attrib
for atts in lsofals.findall('attachments'):
print atts.getchildren()
for aname in atts.findall('attachment filename'):
print aname.attrib
所需样本输出:
{4:20180619.partials.55.1234567.1.csv.gz,5:20180519.payers.12.1015500.1.csv.gz}
使用目前的代码,我能够获得alarm的值,但无法获得附件的值,我对python还很陌生。检索附件的值后,我需要形成一个字典,在解决此问题后,我将使用该字典一次。使用简单元素路径:
输出:
20180619.partials.55.1234567.1.csv.gz
20180519.payers.12.1015500.1.csv.gz
{'4': '20180619.partials.55.1234567.1.csv.gz', '5': '20180519.payers.12.1015500.1.csv.gz'}
如果您需要将其作为词典获取:
...
d = {}
for alarm in root.findall("./alarm"):
for att in alarm.findall("attachments/attachment"):
d[alarm.get('id')] = att.get('filename')
print(d)
输出:
20180619.partials.55.1234567.1.csv.gz
20180519.payers.12.1015500.1.csv.gz
{'4': '20180619.partials.55.1234567.1.csv.gz', '5': '20180519.payers.12.1015500.1.csv.gz'}