2017-01-10 13 views
0

このxml応答は連想配列に変換する必要があり、多くのソリューションを試しましたが、何も問題はありませんでした。 単一の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> 

は、ここで私はにSimpleXMLElementクラス、その後、JSONエンコードXMLを使用してのようなソリューションを試してみましたが、それは働いていなかった

$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(); 

を生成している私のコードです。

$xml = new SimpleXMLElement($xmlString); 

$json = json_encode($xml); 
$array = json_decode($json,TRUE); 
+0

あなたは「多くのソリューション」を試しました。私はあなたの質問であなたが作った試みを見ることができないので... – arkascha

+0

xml2arrayに関する多くの質問があります。私はそれらのほとんどを試しました。たぶん私はカールを使用して石鹸呼び出しからのXML応答を取得している問題があります。私は答えられた解決策を試してみたが、うまくいかなかった。 –

+0

「うまくいかない」とは助けになりません。あなたが試したコードを投稿し、あなたの意見で間違っていることを正確に説明してください。さもなければ、これは単にあなたのためにあなたの仕事をする他の誰かを探しているように見えます... – arkascha

答えて

1

PHPシンプルXML拡張を使用して非常に簡単です。

SimpleXMLはライブラリを使用して

$json = json_encode($xml); 
$array = json_decode($json,TRUE); 

http://php.net/manual/en/book.simplexml.php

+0

'$ xml = new SimpleXMLElement($ result); $ json = json_encode($ xml); $ array = json_decode($ json、TRUE); echo "

"; print_r($array); echo "
"; ' 空の配列を返しました。 –

+0

連想配列である必要はなく、インデックス配列でも問題を解決できます。 –

+0

@HabibJuttあなたのコードの一部を提供できるなら、私はあなたを少し助けてくれるでしょう。どこからXMLデータを取得しますか? –

0

(オブジェクトを返します)あなたのXML

$xml = new SimpleXMLElement($xmlString); 

、あなたが連想配列にしたいから、ちょうどエンコードとJSONでそれをデコードを読みます

$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は最終的な配列になります

+0

申し訳ありませんが、うまくいきませんでした。 '$ xml =新しいSimpleXMLElement($ result); if($ xml){ $ arrayDef = array(); foreach($ xml-> EXPEDICIONを$ itemとして){ $ arrayTemp = array(); $ arrayTemp ['portes'] = $ item-> PORTES; $ arrayTemp ['peso'] = $ item-> PESO; //その他... array_push($ arrayDef、$ arrayTemp); } } echo "

"; print_r($arrayDef); echo "
"; ' –

+0

申し訳ありませんが、私はコードを更新しました。 – mariobros

関連する問題