2016-12-27 6 views
-1

私はxmlデータをフェッチするために、以下のコードを使用しています。他の方法ではできません。私がiOSアプリケーションに使っているので、私は期待通りにxml要素として応答を受け取ります。私がブラウザでそれを実行すると、xmlノードの値だけが表示されます。PHPでハンドルxml応答

たとえば、これは私のxmlです:

<Message version="1.0" messageId="12"> 
<SaleResponse> 
<OrderId>1234</OrderId> 
<OrderAmount>1.0</OrderAmount> 
</SaleResponse> 
</Message> 

これはまさに私がiOSアプリで取得出力されますが、私のブラウザで私はこれを取得:

12341.0

をこれは私のPHPコードです:

<?php 

     $url = 'https://something.com'; 

      $ch = curl_init($url); 

      $inp = $_REQUEST["xmlpost"]; 

      curl_setopt($ch, CURLOPT_POST, 1); 

      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

      curl_setopt($ch, CURLOPT_HTTPHEADER, array(
           'Content-type: application/xml', 
           'TX_URL: something.com', 
           'TX_TokenExID: something', 
           'TX_APIKey: something')); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $inp); 

      $result = curl_exec($ch); 

      echo $result; 
    ?> 

したがって、resultをXMLとして扱い、すべてのタグを個別に取得できますか?事前

+0

http://php.net/manual/en/refs.xml.php –

+0

私は削除することをお勧めしたいです –

+0

@AlexBlex私はこのサイトで何時間も探していますが、私が得ることができるのは、特定の開始点と終了点を持つ準備ができたXMLです。より具体的に何かを示唆できる場合は、私は嬉しいでしょう –

答えて

1

おかげで、PHPの関数simplexml_load_stringを通して、あなたの文字列を実行します。

$result = simplexml_load_string($result); 
echo $result->SaleResponse->OrderId 


<?php 
//or in an actual example 

$string = '<Message version="1.0" messageId="12"> 
<SaleResponse> 
<OrderId>1234</OrderId> 
<OrderAmount>1.0</OrderAmount> 
</SaleResponse> 
</Message>'; 
$obj= simplexml_load_string($string); 
echo '<pre>'; 
print_r($obj); 
+0

回答ありがとうございます。必要なXMLはこの<<< XMLのように開始し、このXMLのように終了する必要があります。 –

+0

<<< XMLはheredoc構文です。あなたの文字列がCURL呼び出しから入ってくるので、その必要はありません。上記の私の例を見てください。 –

+0

私は欠けていたものを見つけました。私のXMLはvposタグで始まりました(このようにして、私はiOSアプリにも持って行った)が、print_rで結果を印刷したとき、最初のタグ(vpos)ヘルプのため –