首先使用函数“simplexml_load_string()”,将XML字符串转为对象;
$obj = simplexml_load_string($str,"SimpleXMLElement", LIBXML_NOCDATA);
然后使用“json_encode()”函数将对象转为JSON字符串;
$json_str = json_encode($obj);
最后使用“json_decode()”转为数组即。
$xml_arr = json_decode($json_str, true);
完整代码
$str = '<xml> <ToUserName> <![CDATA[gh_fc0a06a20993]]> </ToUserName> <FromUserName> <![CDATA[oZI8Fj040-be6rlDohc6gkoPOQTQ]]> </FromUserName> <CreateTime>1472549042</CreateTime> <MsgType> <![CDATA[event]]> </MsgType> <Event> <![CDATA[user_consume_card]]> </Event> <CardId> <![CDATA[pZI8Fj8y-E8hpvho2d1ZvpGwQBvA]]> </CardId> <UserCardCode> <![CDATA[452998530302]]> </UserCardCode> <ConsumeSource> <![CDATA[FROM_API]]> </ConsumeSource> <LocationName> <![CDATA[]]> </LocationName> <StaffOpenId> <![CDATA[oZ********nJ3bPJu_Rtjkw4c]]> </StaffOpenId> <VerifyCode> <![CDATA[]]> </VerifyCode> <RemarkAmount> <![CDATA[]]> </RemarkAmount> <OuterStr> <![CDATA[xxxxx]]> </OuterStr> </xml>'; $obj = simplexml_load_string($str,"SimpleXMLElement", LIBXML_NOCDATA); $test = json_decode(json_encode($obj),true); $arr = [ 'FromUserName' => $test['FromUserName'], 'ToUserName' => $test['ToUserName'], 'CreateTime' => $test['CreateTime'], 'CardId' => $test['CardId'], 'UserCardCode' => $test['UserCardCode'], 'ConsumeSource' => $test['ConsumeSource'], 'StaffOpenId' => $test['StaffOpenId'] ]; $arr = array_map('trim',$arr); var_dump($arr);
推荐教程:《PHP》