SimpleXML问题

| 也许有人可以帮助我解决有关SimpleXML对象的问题。 我正在与authorize.net CIM经理集成并发送客户资料。当我发送它时,原始的xml响应将通过解析器传递并变成SimpleXML对象。 这是用于提交请求的代码:
$content =
        \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\".
        \"<createCustomerProfileRequest xmlns=\\\"AnetApi/xml/v1/schema/AnetApiSchema.xsd\\\">\".
        MerchantAuthenticationBlock().
        \"<profile>\".
        //\"<merchantCustomerId>\".$userInsertedId.\"</merchantCustomerId>\". // Your own identifier for the customer.
        \"<description>\'New User Purchase\'</description>\".
        \"<email>\" . $_GET[\"email\"] . \"</email>\".
        \"<paymentProfiles>\".
        \"<billTo>\".
         \"<firstName>\".$_GET[\"firstname\"].\"</firstName>\".
         \"<lastName>\".$_GET[\"lastname\"].\"</lastName>\".
         \"<address>\".$_GET[\"street\"].\"</address>\".
         \"<city>\".$_GET[\"city\"].\"</city>\".
         \"<state>\".$_GET[\"state\"].\"</state>\".
         \"<zip>\".$_GET[\"zip\"].\"</zip>\".
         \"<country>\".$_GET[\"country\"].\"</country>\".
         \"<phoneNumber>\".$_GET[\"phone\"].\"</phoneNumber>\".
        \"</billTo>\".
        \"<payment>\".
         \"<creditCard>\".
          \"<cardNumber>\".$_GET[\"number\"].\"</cardNumber>\".
          \"<expirationDate>\".$_GET[\"year\"].\"-\".$_GET[\"month\"].\"</expirationDate>\". // required format for API is YYYY-MM
          \"<cardCode>\".$_GET[\"code\"].\"</cardCode>\".
         \"</creditCard>\".
         \"</payment>\".
        \"</paymentProfiles>\".
        \"</profile>\".
        \"<validationMode>testMode</validationMode>\". 
        \"</createCustomerProfileRequest>\";

        $CCresponse = send_xml_request($content);

        //echo($CCresponse);

        $parsedresponse = parse_api_response($CCresponse);

   function parse_api_response($content)
        {
            $parsedresponse = simplexml_load_string($content, \"SimpleXMLElement\", LIBXML_NOWARNING);
            if (\"Ok\" != $parsedresponse->messages->resultCode) 
            {
                echo \"The operation failed with the following errors:<br>\";
                foreach ($parsedresponse->messages->message as $msg) 
                {
                    echo \"[\" . htmlspecialchars($msg->code) . \"] \" . htmlspecialchars($msg->text) . \"<br>\";
                }
                    echo \"<br>\";
            }
            return $parsedresponse;
        }
当我执行以下操作时:
$parsedresponse = parse_api_response($CCresponse);
print_r($parsedresponse);
我得到以下输出:
SimpleXMLElement Object
(
[messages] => SimpleXMLElement Object
    (
        [resultCode] => Ok
        [message] => SimpleXMLElement Object
            (
                [code] => I00001
                [text] => Successful.
            )
    )
[customerProfileId] => 15642446
[customerPaymentProfileIdList] => SimpleXMLElement Object
    (
        [numericString] => 13865552
    )
[customerShippingAddressIdList] => SimpleXMLElement Object
    (
    )
[validationDirectResponseList] => SimpleXMLElement Object
    (
        [string] => 1|1|1|(TESTMODE) This transaction has been approved.|000000|P|0|none|Test transaction for ValidateCustomerPaymentProfile.|1.00|CC|auth_only||*****|******||****|*******|******|******|USA|1234567890||email@email.com|none|none|none|none|none|none|none|none|0.00|0.00|0.00|FALSE|none|207BCBBF78E85CF174C87AE286B472D2|||||||||||||*******|*******||||||||||||||||
    )
)
 )
)
因此,看起来一切正常。但是,当我尝试深入到SimpleXML对象并执行以下操作时:
echo $code = (string) $parsedresponse->messages->resultCode;
我收到\“ OkOk \”的输出,好像它运行了两次。这让我非常疯狂,我无法弄清楚这里到底发生了什么。有人可以在这里指示我正确的方向,以便我可以正常工作吗? 谢谢!     
已邀请:
也许您可以尝试使用xpath方法来导航SimpleXMLElement,如下所示:
$code = (string) $parsedresponse->xpath(\'messages/resultCode\');
echo $code;
    

要回复问题请先登录注册