XML操作

方法1
function parseXML($xmlSrc){
   if(empty($xmlSrc)){
       return false;
   }
   $array = array();
   $xml = simplexml_load_string($xmlSrc);
   $encode = Utils::getXmlEncode($xmlSrc);

   if($xml && $xml->children()) {
	foreach ($xml->children() as $node){
		//有子节点
		if($node->children()) {
			$k = $node->getName();
			$nodeXml = $node->asXML();
			$v = substr($nodeXml, strlen($k)+2, strlen($nodeXml)-2*strlen($k)-5);
			
		} else {
			$k = $node->getName();
			$v = (string)$node;
		}
		
		if($encode!="" && $encode != "UTF-8") {
			$k = iconv("UTF-8", $encode, $k);
			$v = iconv("UTF-8", $encode, $v);
		}
		$array[$k] = $v;
	}
}
   return $array;
}

//获取xml编码
function getXmlEncode($xml) {
	$ret = preg_match ("/<?xml[^>]* encoding=\"(.*)\"[^>]* ?>/i", $xml, $arr);
	if($ret) {
		return strtoupper ( $arr[1] );
	} else {
		return "";
	}
}


xml转array
function xmlToArray($xml){    
   //禁止引用外部xml实体
   libxml_disable_entity_loader(true);
   $values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);        
   return $values;
}

方法2

<?xml version = "1.0" encoding = "UTF-8"?>
<find>
<set_number>002740</set_number>
<no_records>000000088</no_records>
<no_entries>000000088</no_entries>
<session-id>HMUSRLFCHC7FY2RDGYDQPARXSDSEDGEBL3VTSVTRQBKAR5DTEA</session-id>
</find>

$xml =simplexml_load_string($xmls);
$xmljson= json_encode($xml);
$xml=json_decode($xmljson,true);
var_dump($xml);

array(4) {
  ["set_number"]=>
  string(6) "002742"
  ["no_records"]=>
  string(9) "000000088"
  ["no_entries"]=>
  string(9) "000000088"
  ["session-id"]=>
  string(50) "KV47UCJGAVCGANM2286ENMNXPLGPH9JPX7R9S751TGKDX6TSGR"
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值