2016-05-05 17 views
1

は、ここでのXMLです:PHP経由で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 - レッド、イエローターボ - ブルー、キルティングターボ - パープル。

ここに私の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

関連する問題