Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python 2.6.6中获取子级的子级值_Python_Elementtree - Fatal编程技术网

在python 2.6.6中获取子级的子级值

在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

我有下面这样的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.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'}