我有这个xml响应,我想转换为关联数组,我已经尝试了很多解决方案,但没有成功。
<EXPEDICIONES NUM="1">
<EXPEDICION>
<PORTES>Pagados</PORTES>
<DESCRIPCION_CLIENTE_INGLES>ENTREGA EFECTUADA</DESCRIPCION_CLIENTE_INGLES>
<CARACTER_TEL>-</CARACTER_TEL>
<PESO>2.6</PESO>
<ENTREGA_SABADO>N</ENTREGA_SABADO>
<DEBIDO>0</DEBIDO>
<VALOR_TEL>-</VALOR_TEL>
<RECOGIDA_SABADO>N</RECOGIDA_SABADO>
<REMITE_PISO>-</REMITE_PISO>
<REMITE_PROVINCIA>LISBOA</REMITE_PROVINCIA>
<DESTINA_TIPO_NUM>IN</DESTINA_TIPO_NUM>
<DESTINA_PUERTA>-</DESTINA_PUERTA>
<PAGADO>3.38</PAGADO>
<EXISTEN_APUNTES></EXISTEN_APUNTES>
<DESTINA_PISO>-</DESTINA_PISO>
<DESTINA_CCC_ID>-</DESTINA_CCC_ID>
<FAMILIA>715338323</FAMILIA>
</EXPEDICION>
</EXPEDICIONES>
这是我生成的代码
$soap_request = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:con="http://consultaExpediciones.servicios.webseur">
<soapenv:Header/>
<soapenv:Body>
<con:consultaExpedicionesStr>
<con:in0>S</con:in0>
<con:in1></con:in1>
<con:in2></con:in2>
<con:in3></con:in3>
<con:in4>14097-83</con:in4>
<con:in5>03-01-2016</con:in5>
<con:in6>05-12-2017</con:in6>
<con:in7></con:in7>
<con:in8></con:in8>
<con:in9></con:in9>
<con:in10>83080189516234</con:in10>
<con:in11>0</con:in11>
<con:in12>velvet83</con:in12>
<con:in13>velvet83</con:in13>
<con:in14>N</con:in14>
</con:consultaExpedicionesStr>
</soapenv:Body>
</soapenv:Envelope>>';
$header = array(
"Content-type: text/xml;charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"Content-length: " . strlen($soap_request),
);
$soap_do = curl_init();
curl_setopt($soap_do, CURLOPT_URL, "https://ws.seur.com/webseur/services/WSConsultaExpediciones");
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true);
curl_setopt($soap_do, CURLOPT_POST, true);
curl_setopt($soap_do, CURLOPT_POSTFIELDS, $soap_request);
curl_setopt($soap_do, CURLOPT_HTTPHEADER, $header);
$result = (curl_exec($soap_do));
echo "<pre>";
print_r($result);
echo "</pre>";
die();
我尝试过使用SimpleXMLElement类的解决方案,然后对xml进行json编码,但它没有用。
$xml = new SimpleXMLElement($xmlString);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
答案 0 :(得分:1)
使用PHP SimpleXML扩展非常简单。
读取您的XML(返回一个对象)
$xml = new SimpleXMLElement($xmlString);
因为你想要一个关联数组,只需用json
对其进行编码和解码$json = json_encode($xml);
$array = json_decode($json,TRUE);
答案 1 :(得分:0)
使用SimpleXml库
$xml = new SimpleXMLElement($yourXmlString);
if($xml)
{
$arrayDef = array();
foreach ($xml->EXPEDICION as $item) {
$arrayTemp = array();
$arrayTemp['portes'] = (string)$item->PORTES;
$arrayTemp['peso'] = (string)$item->PESO;
array_push($arrayDef, $arrayTemp);
}
echo '<pre>' . print_r($arrayDef, true) . '</pre>';
}
$ arrayDef将是你的最终数组