Package: awsxmltojson
AWS XML to JSONThis repository is a work in progress, contribution is welcome!This module converts AWS API XML responses to JSON, it
matches the output of AWS APIs whereAccept: application/jsonis provided
as a header.Usagefromawsxmltojsonimportconvert_xml_to_dictconvert_xml_to_dict("""<ListQueuesResponse><ListQueuesResult><QueueUrl>https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue</QueueUrl></ListQueuesResult><ResponseMetadata><RequestId>725275ae-0b9b-4762-b238-436d7c65a1ac</RequestId></ResponseMetadata></ListQueuesResponse>""")# Outputs...{"ListQueuesResponse":{"ListQueuesResult":{"queueUrls":["https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue"]},"ResponseMetadata":{"RequestId":"725275ae-0b9b-4762-b238-436d7c65a1ac"}}}ExamplesErrorResponse<ErrorResponse><Error><Type>Sender</Type><Code>AccessDenied</Code><Message>Accesstotheresourcehttps://sqs.us-east-1.amazonaws.com/isdenied.</Message><Detail/></Error><RequestId>2d121ac6-aeee-515c-8d04-420e02b34285</RequestId></ErrorResponse>{"ErrorResponse":{"Error":{"Code":"AccessDenied","Message":"Access to the resource https://sqs.us-east-1.amazonaws.com/ is denied.","Type":"Sender"},"RequestId":"2d121ac6-aeee-515c-8d04-420e02b34285"}}SQS.ListQueues<ListQueuesResponse><ListQueuesResult><QueueUrl>https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue</QueueUrl></ListQueuesResult><ResponseMetadata><RequestId>725275ae-0b9b-4762-b238-436d7c65a1ac</RequestId></ResponseMetadata></ListQueuesResponse>{"ListQueuesResponse":{"ListQueuesResult":{"queueUrls":["https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue"]},"ResponseMetadata":{"RequestId":"725275ae-0b9b-4762-b238-436d7c65a1ac"}}}SQS.ReceiveMessage<ReceiveMessageResponse><ReceiveMessageResult><Message><MessageId>5fea7756-0ea4-451a-a703-a558b933e274</MessageId><ReceiptHandle>MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+CwLj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QEauMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0=</ReceiptHandle><MD5OfBody>fafb00f5732ab283681e124bf8747ed1</MD5OfBody><Body>Thisisatestmessage</Body><Attribute><Name>SenderId</Name><Value>195004372649</Value></Attribute><Attribute><Name>SentTimestamp</Name><Value>1238099229000</Value></Attribute><Attribute><Name>ApproximateReceiveCount</Name><Value>5</Value></Attribute><Attribute><Name>ApproximateFirstReceiveTimestamp</Name><Value>1250700979248</Value></Attribute></Message></ReceiveMessageResult><ResponseMetadata><RequestId>b6633655-283d-45b4-aee4-4e84e0ae6afa</RequestId></ResponseMetadata></ReceiveMessageResponse>{"ReceiveMessageResponse":{"ReceiveMessageResult":{"messages":[{"MessageId":"5fea7756-0ea4-451a-a703-a558b933e274","ReceiptHandle":"MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+CwLj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QEauMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0=","MD5OfBody":"fafb00f5732ab283681e124bf8747ed1","Body":"This is a test message","SenderId":"195004372649","SentTimestamp":"1238099229000","ApproximateReceiveCount":"5","ApproximateFirstReceiveTimestamp":"1250700979248"}]},"ResponseMetadata":{"RequestId":"b6633655-283d-45b4-aee4-4e84e0ae6afa"}}}SQS.SendMessage<SendMessageResponse><SendMessageResult><MD5OfMessageBody>fafb00f5732ab283681e124bf8747ed1</MD5OfMessageBody><MD5OfMessageAttributes>3ae8f24a165a8cedc005670c81a27295</MD5OfMessageAttributes><MessageId>5fea7756-0ea4-451a-a703-a558b933e274</MessageId></SendMessageResult><ResponseMetadata><RequestId>27daac76-34dd-47df-bd01-1f6e873584a0</RequestId></ResponseMetadata></SendMessageResponse>{"SendMessageResponse":{"SendMessageResult":{"MD5OfMessageBody":"fafb00f5732ab283681e124bf8747ed1","MD5OfMessageAttributes":"3ae8f24a165a8cedc005670c81a27295","MessageId":"5fea7756-0ea4-451a-a703-a558b933e274"},"ResponseMetadata":{"RequestId":"27daac76-34dd-47df-bd01-1f6e873584a0"}}}Want to add another AWS API?Download the XML to JSON mapping helper file from theaws javascript sdkAdd it so it's loaded inget_shape.pyWrite a couple sample tests use example responses from the AWS documentation to make sure
it's workingRunupdate_readme_with_samples.pyto have your samples added to the README