2013-08-07 56 views
1

我是一個通過PHP simplexml_load_file讀出XML的初學者。我的問題是讀出具有ID的單個元素作爲屬性。此外,我想以黑色回顯所有類型(通過十六進制搜索:#000000,因爲它甚至不是變體中的相同ID)。雙foreach循環失敗,通過讀出xml attribut與simplexml PHP

見下面我舉的例子:

file.xml

<products> 
     <types> 
      <name>Artikel</name> 
      <description>blablabla</description> 
      <variations> 
      <variation id=2> 
       <name>black</name> 
       <colors> 
       <color index="1">#000000</color> 
       </colors> 
      </variation> 
      <variations> 
      <variation id=1> 
       <name>white</name> 
       <colors> 
       <color index="2">#FFFFFF</color> 
       </colors> 
      </variation> 
     </variations> 
     </types> 
     <types> 
      <name>Artikel</name> 
      <description>blablabla</description> 
      <variations> 
      <variation id=7> 
       <name>black</name> 
       <colors> 
       <color index="6">#000000</color> 
       </colors> 
      </variation> 
      <variations> 
      <variation id=90> 
       <name>black</name> 
       <colors> 
       <color index="3">#000000</color> 
       </colors> 
      </variation> 
     </variations> 
     </types> 
    </products> 

使用PHP我可以找到所有的它:

<?php 

    $products = simplexml_load_file(xml.file); 
     /*echo '<pre>'; 
     print_r ($products); //all products 
     echo '</pre>';*/ 

     foreach ($products as $types) 
     { 
      echo '<pre>'; 
      print_r ($types); 
      echo '</pre>'; 
      foreach ($products->variation as $variation) 
      { 
       echo '<pre>'; 
       echo $variation; 
       echo '</pre>'; 
      } 
         if (color == #00000) /*I know this is wrong, it is just my base for solving*/ 
         { 
           echo types; 
         } 

     } 
?> 

代碼PHP的Projekt:

<?php 

    $productTypes = simplexml_load_file('http://api.spreadshirt.net/api/v1/shops/611779/productTypes?fullData=true'); 
     /*echo '<pre>'; 
     print_r ($productTypes); 
     echo '</pre>';*/ 

     foreach ($productTypes as $productType) 
     { 
      /*echo '<pre>'; 
      print_r ($productType); 
      echo '</pre>';*/ 
      foreach ($productType->appearances->appearance[0] as $appearances) 
      { 

       //echo $appearances. '</br>'; 
       foreach ($appearances->colors->color['#000000'] as $color) 
       { 

        echo $color. '</br>'; 
        if ($color == 'black'); 
        { 
        echo $color; 
        } 

       } 
      } 

     } 
?> 
+0

顯示您的print_r($ products); –

+0

嗨,謝謝你的回答,但對不起,它不再工作。我不知道爲什麼。 :( – sepp

+0

我也在進行中找到這個錯誤! – sepp

回答

1

試試這個工作正常

$products = simplexml_load_file('http://api.spreadshirt.net/api/v1/shops/611779/productTypes?fullData=true');  

     $allproducts = $products->productType; 
     foreach ($allproducts as $types) 
     {   
      $app = $types->appearances; 
      $appearance = $app->appearance; 
      $color = $appearance->colors; 
      $colors = $color->color; 
      foreach ($colors as $colornew) 
      { 
       if ($colornew == '#FFFFFF'); 
        { 
        echo 'white<br>'; 
        } 
       if($colornew=='000000') //this is a black 
        { 
         echo $name = $types->name; 
        echo $shortDescription = $types->shortDescription; 
        $price = $types->price; 
        //echo $vatExcluded = $price['vatExcluded']; 
              echo $vatExcluded = $price->vatExcluded."<br>"; 
        }    

      } 
     } 
+0

是啊,這太好了,謝謝很多!)我改變顏色爲黑色,並試圖迴應出所有顏色爲黑色的產品,但它不起作用。我想我可以把它放入echo $ allproducts。你有什麼主意嗎? – sepp

+0

您的Feed只包含顏色屬性。你想要什麼。爲什麼你想要黑色。明確解釋 –

+0

@sepp你在那裏。這是簡單的工作。不要着色 –