由于lxml属性错误

时间:2018-02-15 22:13:15

标签: python xml amazon-dynamodb lxml

我正在尝试将数据写入DynamoDB中的表。该项目是多个AWS AMI ID,属性是操作系统,漏洞风险级别和包。我有一个我在S3中读取的XML文件。有多个<IMAGE_ID>标记,因此我使用findall()方法来解析所有图像ID和子元素(操作系统,漏洞风险级别等)。当我尝试将此数据写入表时,我收到以下错误:

'list' object has no attribute 'text'

Code:

import boto3
import os
import lxml
from lxml import etree

def WriteItemToTable():
    s3 = boto3.resource('s3')
    bucket = 'XXXXXXXXXX'
    key = 'XXXXX.xml'
    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('ExistingAMI')

    os.chdir('/tmp')
    s3.Bucket(bucket).download_file(key, 'XXXX.xml')
    f = open("XXXX.xml","r")
    tree = etree.parse(f)

    for i in tree.find('HOST_LIST'):
        image_id = i.findall('EC2_INFO/IMAGE_ID').text
        os_id = i.findall('OPERATING_SYSTEM').text
        sev_score = i.findall('VULN_INFO_LIST/VULN_INFO/CVSS_FINAL').text
        patch_info = i.findall('VULN_INFO_LIST/VULN_INFO/RESULT').text

        table.put_item(Item={'AMI_ID': image_id, 'OS':os_id, 'Severity': sev_score, 'Patches': patch_info,})

WriteItemToTable()

所以,显然findall()方法没有响应.text.但是,我不确定用什么方法来解析这些值。

0 个答案:

没有答案