2017-12-20 7 views
0

私のXMLからいくつかのデータを表示したいと思います。simplexml_load_stringを使用してXMLからデータを読み取る方法

  • [ID] => 2065、
  • [価格] [ネット] => 1023.71、
  • [サイズ:私はから値を取得したい

    [@attributes] => Array (
    [id] => 2065) 
    [price] => Array (
        [@attributes] => Array (
        [gross] => 1259.16 
        [net] => 1023.71 
        [vat] => 23.0) 
        ) 
    [srp] => Array (
        [@attributes] => Array (
        [gross] => 1499.00 
        [net] => 1218.7 
        [vat] => 23.0) 
        ) 
    [sizes] => Array (
        [size] => Array (
         [@attributes] => Array (
         [id] => 0 
         [code_producer] => 33124.16.EN 
         [code] => 2065-0 
         [weight] => 999) 
         [stock] => Array (
          [@attributes] => Array (
          [id] => 1 
          [quantity] => 1 
          ) 
         ) 
        ) 
    

    :これは私のXMLであります] [サイズ] [在庫数] => 1 1.

次のコメントを読んだ後、私は自分のコードを変更しました。しかし、私はまだ、私は属性値を取得する方法を理解できません。

foreach ($xmlArray AS $produkt) { 
     foreach ($produkt AS $abc) { 
      foreach ($abc AS $singleValue) { 

       $data[] = array('net' => (string)$singleValue->price['net']); 
      } 
     } 
    } 
    return $data; 

そして出力: Array ([0] => Array ([net] => b) [1] => Array ([net] =>) [2] => Array ([net] =>)) 1

問題がある、私はforeachのを使用する必要がありますどのように多くの時間がわからないと、こののparam @attributesが私のために奇妙です。手伝ってくれてありがとう。

種類が

$data[] = array('net' => $singleValue[0]['net']); 

+2

元のXML(ない処理された文書を出力結果)を含めてください - それはで動作する方がはるかに簡単です。 –

答えて

0
$data[] = array('net' => $singleValue['net']); 

に関しては、静的インデックスは([0])のような動的

0

SimpleXMLのアレイを生成しない、それはオブジェクトを生成することを試みます。使用方法についてはbasic examples in the manualをご確認ください。

デバッグ出力の@attributesは、要素から子属性を分離するだけで、実際にアクセスする方法ではありません。

あなたのデバッグ出力を見ると、それはあなたが実際に欲しいもののように見えますが、このようなものです:

foreach ($xml_object->products->product as $product) { 
    $data[] = array('net' => (string)$product->price['net']); 
    $data[] = array('net' => (string)$product->srp['net']); 
} 
関連する問題