如何将authorize.net中的lxml.objectify.ObjectifiedElement迭代转换为python dict
我正在尝试对authorize.net中的数据执行事务报告 我已经确定返回的对象是如何将authorize.net中的lxml.objectify.ObjectifiedElement迭代转换为python dict,python,python-3.x,lxml,authorize.net,Python,Python 3.x,Lxml,Authorize.net,我正在尝试对authorize.net中的数据执行事务报告 我已经确定返回的对象是lxml.objectify.ObjectifiedElement,很难按原样处理 我希望将此对象转换为一个更可行的dict对象,但在这样做时遇到了困难 我已确定authorize.net事务如下所示: <getTransactionDetailsRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"> <messages> &
lxml.objectify.ObjectifiedElement
,很难按原样处理
我希望将此对象转换为一个更可行的dict
对象,但在这样做时遇到了困难
我已确定authorize.net事务如下所示:
<getTransactionDetailsRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
<messages>
<resultCode>...</resultCode>
<message>
<code>...</code>
<text>...</text>
</message>
</messages>
<transaction>
<transId>...</transId>
<submitTimeUTC>...</submitTimeUTC>
<submitTimeLocal>...</submitTimeLocal>
<transactionType>...</transactionType>
<transactionStatus>...</transactionStatus>
<responseCode>...</responseCode>
<responseReasonCode>...</responseReasonCode>
<responseReasonDescription>...</responseReasonDescription>
<AVSResponse>...</AVSResponse>
<cardCodeResponse>...</cardCodeResponse>
<batch>
<batchId>...</batchId>
<settlementTimeUTC>...</settlementTimeUTC>
<settlementTimeLocal>...</settlementTimeLocal>
<settlementState>...</settlementState>
</batch>
<order>
<description>...</description>
</order>
<authAmount>...</authAmount>
<settleAmount>...</settleAmount>
<lineItems>
<lineItem>
<itemId>...</itemId>
<name>...</name>
<description>...</description>
<quantity>...</quantity>
<unitPrice>...</unitPrice>
<taxable>...</taxable>
</lineItem>
</lineItems>
<taxExempt>...</taxExempt>
<payment>
<creditCard>
<cardNumber>...</cardNumber>
<expirationDate>...</expirationDate>
<cardType>...</cardType>
</creditCard>
</payment>
<customer>
<email>...</email>
</customer>
<billTo>
<firstName>...</firstName>
<lastName>...</lastName>
<phoneNumber>...</phoneNumber>
</billTo>
<recurringBilling>...</recurringBilling>
<product>...</product>
<marketType>...</marketType>
</transaction>
我已经找到并作为lxml对象的帮助
我想生成一个dict,如下所示
{getTransactionDetailsRequest :
{messages :
{code : ...},
{text : ...}
},
{transaction :
{transId : ...},
...
}
}
我想出了一个办法:
import re
def to_dict(element):
ret = {}
if element.getchildren() == []:
return element.text
else:
for elem in element.getchildren():
subdict = to_dict(elem)
ret[re.sub('{.*}', '', elem.tag)] = subdict
return ret
这将返回预期的字典
希望这能在将来帮助其他人