Php XML解析到HTML表-显示所有类别

Php XML解析到HTML表-显示所有类别,php,html,xml,parsing,Php,Html,Xml,Parsing,我有这个xml文档: <offer> <image width="450" height="300">http://dsc.invia.cz/img/affil-450x300/2014/7/10/d0/4756588.jpg</image> <photos> <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643777.jpg</photo> &l

我有这个xml文档:

<offer>
<image width="450" height="300">http://dsc.invia.cz/img/affil-450x300/2014/7/10/d0/4756588.jpg</image>
<photos>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643777.jpg</photo>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643778.jpg</photo>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643779.jpg</photo>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643780.jpg</photo>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643781.jpg</photo>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643782.jpg</photo>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643783.jpg</photo>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643784.jpg</photo>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643785.jpg</photo>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643786.jpg</photo>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643787.jpg</photo>
  <photo>http://dsc.invia.cz/img/affil-450x300/2015/3/5/d4/5643788.jpg</photo>
</photos>
<destination>
  <country>Egypt</country>
  <locality>Hurghada</locality>
</destination>
<hotel>Three Corners Sunny Beach</hotel>
<term>
  <from>2015-07-29</from>
  <to>2015-08-05</to>
  <length>8</length>
</term>
<price currency="CZK">15290</price>
<tax currency="CZK">0</tax>
<totalprice currency="CZK">15290</totalprice>
<discount>0</discount>
<food>All Inclusive</food>
<transportation>Letecky</transportation>
<airports>
  <airport>Praha</airport>
</airports>
<url>http://hotel.invia.cz/egypt/hurghada/three-corners-sunny-beach-resort/tour-925060/?id=64762198&amp;aid=533153</url>
<tourtypes>
  <type>Pobytové</type>
</tourtypes>
<hotelinfo>
  <id>46667</id>
  <stars>4</stars>
  <rating>7.8</rating>
  <ratingcount>62</ratingcount>
  <coords>
    <lat>27.318666465248917</lat>
    <lng>33.70912313461304</lng>
  </coords>
  <url>http://hotel.invia.cz/egypt/hurghada/three-corners-sunny-beach-resort/?aid=533153</url>
</hotelinfo>
<termtype>catalogue</termtype>
我可以解析图像、目的地、酒店、术语起始、术语终止、术语长度等,但我不能解析机场和照片,因为项目数量不同

我的php代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>XML feed</title>
  </head>
  <body>



<?php
$xml = new SimpleXMLElement('test.xml', 0, TRUE);
?>
<table width='100%'>
  <thead>
    <tr>
      <th>Snímka</th>
      <th>Stát</th>
      <th>Destinace</th>
      <th>Hotel</th>
      <th>Od</th>
      <th>Do</th>
      <th>Počet dní</th>
      <th>Cena</th>
      <th>Sleva</th>
      <th>Jídlo</th>
      <th>Doprava</th>
    </tr>
  </thead>
  <tbody>

<?php foreach ($xml->offer as $ponuka) :?>
    <tr>
      <td><img src='<?php echo $ponuka->image; ?>' width='100'></td>
      <td><?php echo $ponuka->destination->country; ?></td>
      <td><?php echo $ponuka->destination->locality; ?></td>
      <td><a href='<?php echo $ponuka->hotelinfo->url; ?>'><?php echo $ponuka->hotel; ?></a>, <?php echo $ponuka->hotelinfo->stars; ?>*</td>
      <td><?php echo $ponuka->term->from; ?></td>
      <td><?php echo $ponuka->term->to; ?></td>
      <td><?php echo $ponuka->term->length; ?></td>    
      <td><?php echo $ponuka->totalprice; ?>,- Kč</td>
      <td><?php echo $ponuka->discount; ?>%</td>
      <td><?php echo $ponuka->food; ?></td>
      <td><?php echo $ponuka->transportation; ?></td>
      <td><?php foreach ($xml->offer->airports as $letiska) :?><?php echo $letiska->airport; ?><?php endforeach; ?></td>
    </tr>
<?php endforeach; ?>
  </tbody>
</table>    
  </body>
</html>
如何为foreach编程以获取照片和机场?
谢谢大家的帮助。

我对您的代码做了一些改动,并使用了一些函数。 看看吧

<?php

$xml = simplexml_load_file('offer.xml');

function renderOffer($xml){
    $output = '';
    foreach ($xml->offer as $offer)
        $output .= '<tr>
      <td><img src='. $offer->image .' width="100"></td>
      <td>'. $offer->destination->country .'</td>
      <td>'. $offer->destination->locality .'</td>
      <td><a href="'. $offer->hotelinfo->url .'">'. $offer->hotel .'</a>, '. $offer->hotelinfo->stars .'*</td>
      <td>'. $offer->term->from .'</td>
      <td>'. $offer->term->to .'</td>
      <td>'. $offer->term->length .'</td>    
      <td>'. $offer->totalprice .',- Kč</td>
      <td>'. $offer->discount .'%</td>
      <td>'. $offer->food .'</td>
      <td>'. $offer->transportation .'</td>
      <td>'. renderAirports($offer->airports) .'</td>
    </tr>';
    return $output;
}

function renderAirports($airports){
    $output = '';
    foreach ($airports as $letiska)
        $output .= $letiska->airport;
    return $output;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>XML feed</title>
  </head>
  <body>

<table width='100%'>
  <thead>
    <tr>
      <th>Snímka</th>
      <th>Stát</th>
      <th>Destinace</th>
      <th>Hotel</th>
      <th>Od</th>
      <th>Do</th>
      <th>Počet dní</th>
      <th>Cena</th>
      <th>Sleva</th>
      <th>Jídlo</th>
      <th>Doprava</th>
    </tr>
  </thead>
  <tbody>
<?php print renderOffer($xml); ?>
  </tbody>
</table>    
  </body>
</html>
在tbody块中显示此选项

<tr>
      <td><img src=http://dsc.invia.cz/img/affil-450x300/2014/7/10/d0/4756588.jpg width="100"></td>
      <td>Egypt</td>
      <td>Hurghada</td>
      <td><a href="http://hotel.invia.cz/egypt/hurghada/three-corners-sunny-beach-resort/?aid=533153">Three Corners Sunny Beach</a>, 4*</td>
      <td>2015-07-29</td>
      <td>2015-08-05</td>
      <td>8</td>
      <td>15290,- Kč</td>
      <td>0%</td>
      <td>All Inclusive</td>
      <td>Letecky</td>
      <td>Praha</td>
    </tr>

尝试此警告:在第45行的/www/b/o/u50329/public_html/xml.php中为foreach提供的参数无效:/n现在尝试一下,它位于一个变量$airport中。输出为:PrahaBrno。但我需要它的格式:普拉哈,布尔诺。我该怎么办?