Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将authorize.net中的lxml.objectify.ObjectifiedElement迭代转换为python dict_Python_Python 3.x_Lxml_Authorize.net - Fatal编程技术网

如何将authorize.net中的lxml.objectify.ObjectifiedElement迭代转换为python dict

如何将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> &

我正在尝试对authorize.net中的数据执行事务报告

我已经确定返回的对象是
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
这将返回预期的字典

希望这能在将来帮助其他人