PHP获取xml数据以及输出xml结构数据
1、输出XML结构数据
直接的方法
header("Content-type:text/xml;charset=utf-8"); echo <<<XML <xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml> XML; exit();
数组转xml再输出
header("Content-type:text/xml;charset=utf-8"); function ToXml($data){ if(!is_array($data) || count($data) <= 0){ return $data; } $xml = "<xml>"; foreach ($data as $key=>$val){ if (is_numeric($val)){ $xml.="<".$key.">".$val."</".$key.">"; }else{ $xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; } } $xml.="</xml>"; return $xml; } $res = array( 'return_code' => 'SUCCESS', 'return_msg' => 'OK', ); $str = ToXml($res); echo $str; exit();
2、获取xml数据并转化成数组
function FromXml($xml){ if(!$xml){ return null; } //将XML转为array //禁止引用外部xml实体 libxml_disable_entity_loader(true); return json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); }
一般的xml可以直接通过上面的方法获取,如果是网页响应的原始数据流则可用
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
得到xml文本,再通过上面的方法进行转换。