1.第一种转换方法:
//数组转XML
function arrayToXml($arr) {
$xml = "<xml>";
foreach ($arr as $key => $val) {
if (is_numeric($val)) {
$xml .= "<" . $key . ">" . $val . "</" . $key . ">";
} else {
$xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";
}
}
$xml .= "</xml>";
return $xml;
}
//xml转数组
function xmlToArray($xml) {
$array = (array) simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
return $array;
}
2.第二种转换方法:
$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);