如何从boto调用中返回XML?
我正在使用 boto 2.32.1 和 Python 2.7.6。现在我在用 boto 的 mws 模块中的 list_orders 函数获取我的亚马逊订单的 XML 数据时遇到了一些问题。
这是我调用的代码:
response = connection.list_orders(CreatedAfter='2014-08-26T05:53:44+00:00',
MarketplaceId=['XXXXXXXXXXXXX'])
这是 response
的值(个人信息已经去掉了)
ListOrdersResponse{u'xmlns': u'https://mws.amazonservices.com/Orders/2013-09-01'}
(ListOrdersResult: ListOrdersResult{}
(CreatedBefore: u'2014-08-26T10:06:10Z', Orders: ^Orders^{}
(Order: [Order{}(***ORDER INFORMATION***)])),
ResponseMetadata: ^ResponseMetadata^{}(RequestId: u'xxxxxxxxxx'))
这样并不好,因为我还有一个处理 eBay 销售的模块,它能处理 ebaysdk-python 返回的 XML。亚马逊的 XML 格式和 eBay 类似,所以如果我能得到亚马逊返回的 XML,而不是上面的格式,那就太好了。
我注意到如果我使用 boto.set_stream_logger('boto')
,它会打印出返回的 XML,所以也许我可以利用这个功能?
我希望能返回这样的内容:
<ListOrdersResponse xmlns="https://mws.amazonservices.com/Orders/2013-09-01">
<ListOrdersResult>
<Orders>
<Order>
***ORDER INFORMATION***
</Order>
</Orders>
<CreatedBefore>2014-08-26T10:18:59Z</CreatedBefore>
</ListOrdersResult>
<ResponseMetadata>
<RequestId>XXXXXXXXXXXXXXXXXXXXXXXXXXXXX</RequestId>
</ResponseMetadata>
</ListOrdersResponse>
然后我可以使用 Python 的 xml.etree.ElementTree 来解析和处理这些数据。
1 个回答
3
我觉得没有官方支持的方法可以做到这一点,不过你可以这样做,轻松获取原始的XML响应:
# Set up
from boto.mws.connection import MWSConnection
MWSConnection._parse_response = lambda s, x, y, z: z
# Usage
result = az.get_matching_product_for_id(MarketplaceId="ATVPDKIKX0DER",
SearchIndex="Books",
IdType="ASIN",
IdList=[0439023521])
# <?xml version="1.0"?>\n<GetMatchingProductForIdResponse xmlns...