【问题标题】:Reading XML from S3 Python AWS Lambda从 S3 Python AWS Lambda 读取 XML
【发布时间】:2019-12-17 20:10:10
【问题描述】:

我正在尝试读取 s3 存储桶中的文件并在 python AWS Lambda 函数中使用 xml minidom 提取元素。我不断收到错误 - “errorMessage”:“无法编组响应:元素类型的对象不是 JSON 可序列化的”。

import json
from xml.dom import minidom
import boto3

s3 = boto3.resource('s3')

def lambda_handler(event, context):
   bucketname = 'mybucket' 
   filename = 'myfile.xml' 
   obj = s3.Object(bucketname, filename)
   file_data = obj.get()['Body'].read()

   #parse xml
   xmldoc = minidom.parseString(file_data)
   message_1 = xmldoc.getElementsByTagName('id')

   #return
   return {
      "bucketname": bucketname,
      "file_data": file_data,
      "id": message_1
   }

【问题讨论】:

    标签: python amazon-web-services amazon-s3 xml-parsing minidom


    【解决方案1】:

    getElementsByTagName 返回一个NodeList,其中包含Elements,而这又不是JSON 可序列化的。如果您希望 xml 中只有 1 个 id 元素,您可以这样做

       return {
          "bucketname": bucketname,
          "file_data": file_data,
          "id": message_1.item(0).firstChild.data
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 2017-05-11
      • 1970-01-01
      • 2019-10-15
      • 2020-02-09
      • 2020-04-13
      相关资源
      最近更新 更多