2017-12-20 6 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 나를 위해 이상하다. 도와 주셔서 감사합니다.

종류는 오브젝트를 생성한다 ([0]) 동적

+2

원래 XML (안 처리 문서를 출력 결과)를 포함하십시오 -이 작업을 훨씬 쉽게 . –

답변

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

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

하려고 관하여. 사용 방법은 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']); 
} 
0

로 SimpleXML의 배열을 생성하지 않는 정적 인덱스 있도록

관련 문제