2016-09-05 9 views
1

xmlを分解または分割して配列に変換し、データベースに挿入する方法を知りたい。私は毎日ヒットする必要のあるapiを持っているので、xmlを返します。Exlpode xmlを配列に変換する

ここに私のXMLサンプルです:

<ArrayOfUnitPrice> 
<UnitPrice> 
    <PriceAmount>1579.7080</PriceAmount> 
    <PriceDate>2016-09-02</PriceDate> 
    <PriceType>XWZ</PriceType> 
</UnitPrice> 
<UnitPrice> 
    <PriceAmount>1028.4137</PriceAmount> 
    <PriceDate>2016-09-02</PriceDate> 
    <PriceType>ABC</PriceType> 
</UnitPrice> 
... 
</ArrayOfUnitPrice> 

私はXMLレスポンスを抽出するために、このコードを使用しています:

$ch = curl_init("111.222.333.444:8080/code.asmx/Price"); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_POST,1); 
     curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
     curl_setopt($ch, CURLOPT_POSTFIELDS,$data); 
$result=curl_exec ($ch); 

//my code here 

curl_close($ch); 

は、私はすでに以下のコードを使って、自分のコードを解決するために行わ を解決しましたみんな

$xml = simplexml_load_string($result); 

for ($i=0; $i < count($xml) ; $i++) { 
    $arr[] = array (
    'PriceAmount' => $xml->UnitPrice[$i]->PriceAmount, 
    'PriceDate' => $xml->UnitPrice[$i]->PriceDate, 
    'PriceType' => $xml->UnitPrice[$i]->PriceType 
); 
} 
$data = json_decode(json_encode($arr), true); 
$servername = "localhost"; 
$username  = "root"; 
$password  = ""; 
$dbname  = "dailywork"; 

$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

if(is_array($data)){ 
    $check = "SELECT * FROM table_unit"; 
    if($conn->query($check)->num_rows > 0){ 
     // my stuff to here :-D 
    }else{ 
     /*Insert data to DB*/ 
     $sql = "INSERT INTO table_unit (PriceAmount, PriceDate, PriceType) values "; 
     $valuesArr = array(); 
     foreach($data as $row){ 
      $PriceAmount = $row[PriceAmount][0]; 
      $PriceDate = $row[PriceDate][0]; 
      $PriceType = $row[PriceType][0]; 
      $valuesArr[] = "('$PriceAmount', '$PriceDate', '$PriceType')"; 
     } 
     $sql .= implode(',', $valuesArr); 
     if ($conn->query($sql) === TRUE) { 
     echo "New record created successfully"; 
     } else { 
     echo "Error: " . $sql . "<br>" . $conn->error; 
     } 
     /*End Insert data to DB*/ 
    } 
} 

$conn->close(); 
+0

を助けなら、私に知らせて、このようなあなたの$結果を渡し、それを

xml2php($result); 

をチェックし、あなたに

function xml2php($xmlcontent) { $xml_parser = xml_parser_create(); xml_parse_into_struct($xml_parser, $xmlcontent, $arr_vals); xml_parser_free($xml_parser); return $arr_vals; } 

をあなたのXMLの配列を与えますSOAP APIを使用していますか? –

+0

@ GrzegorzB.yes、thats right –

答えて

1

この機能は、それはあなた

+0

ok、私は@rahul –

+0

私はあなたのコードを理解することができなかったので、私はそれを解決するために他のコードを使用することができませんでした。本当に助けに感謝します。ありがとう@rahul –

関連する問題