开发者社区> 问答> 正文

从S3 Python AWS Lambda读取XML

我试图在s3 bucket中读取文件,并在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
   }

问题来源StackOverflow 地址:/questions/59381417/reading-xml-from-s3-python-aws-lambda

展开
收起
kun坤 2019-12-28 13:51:34 762 0
1 条回答
写回答
取消 提交回答
  • getElementsByTagName返回一个节点列表,其中包含的元素不是JSON序列化的。如果希望xml中只有一个id元素,可以这样做

       return {
          "bucketname": bucketname,
          "file_data": file_data,
          "id": message_1.item(0).firstChild.data
       }
    
    2019-12-28 13:51:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载