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文本,再通过上面的方法进行转换。