2016-05-05 45 views
1

我已經得到了我想要從通過PHP拉一個XML飼料,這裏的XML:如何通過PHP正確從XML提取數據?

<PhysicalCar> 
    <Car IDValue="fr"> 
     <CarInformation> 
      ...INFORMATION... 
     </CarInformation> 
     <CarModel IDValue="lx-red"> 
      <Name>Luxurious Frodo - Red</Name> 
     </CarModel> 
     <CarModel IDValue="kx-blue"> 
      <Name>Kajun Frodo - Blue</Name> 
     </CarModel> 
     <CarModel IDValue="bx-purple"> 
      <Name>BMX Frodo - Purple</Name> 
     </CarModel> 
    </Car> 
    <Car IDValue="gk"> 
     <CarInformation> 
      ...INFORMATION... 
     </CarInformation> 
     <CarModel IDValue="jr-red"> 
      <Name>Joyride Turbo - Red</Name> 
     </CarModel> 
     <CarModel IDValue="yy-blue"> 
      <Name>Yellow Turbo - Blue</Name> 
     </CarModel> 
     <CarModel IDValue="qq-purple"> 
      <Name>Quilting Turbo - Purple</Name> 
     </CarModel> 
    </Car> 
    ...MORE CARS... 
</PhysicalCar> 

按照上面的XML,有大約50-100「汽車」 S。我正在嘗試編寫能夠傳遞值的PHP代碼,例如'gk'並使用相同的IDValue掃描「Car」。當找到時,我想循環瀏覽每個「CarModel」並將它們回顯出來。

因此,舉例來說,如果 'GK' 被傳遞,這將是輸出:

JoyrideTurbo - 紅,黃睿頻 - 藍色,絎縫的Turbo - 紫色。

這裏是我的PHP代碼:

<?php 
    $passedinvalue = 'gk'; 

    $xml = simplexml_load_file('myxml.xml') 
    or die("Cannot create object"); 

    foreach ($xml->Car as $c) { 
     if ($c->IDVAlue = $passedinvalue) { 
      foreach ($c->CarModel as $cm) { 
       echo $cm->Name; 
      } 
     } 
    } 
?> 

什麼是正確的方式去了解這個PHP代碼?

回答

2

你可以用XPath解決這個問題。

foreach($xml->xpath('//Car[@IDValue="' . $passedinvalue . '"]') as $car_models) { 
    foreach($car_models->CarModel as $car_model) { 
     echo $car_model->Name; 
    } 
} 
+1

謝謝,就是這樣。 – NoReceipt4Panda

相關問題