2016-05-05 21 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

相关问题