我试图在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
getElementsByTagName返回一个节点列表,其中包含的元素不是JSON序列化的。如果希望xml中只有一个id元素,可以这样做
return {
"bucketname": bucketname,
"file_data": file_data,
"id": message_1.item(0).firstChild.data
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。