从URL地址解析XML并使用PHP转换为表

时间:2018-04-12 14:35:22

标签: php html xml xml-parsing

我尝试从此网址http://r7j8v4x4.map2.ssl.hwcdn.net/NOD_R.xml获取以下xml并创建包含数据的表格。我已经验证我可以使用print_r($ xml)来提取数据;但我无法将数据转储到表格中。这是我到目前为止所做的,这可能是错误的。任何人都可以帮我使用正确的代码吗?

<?php
$url = "http://r7j8v4x4.map2.ssl.hwcdn.net/NOD_R.xml";
$xml = simplexml_load_file($url);
?>
<table>
  <thead>
    <tr>
      <col><span style="font-weight:bold">Day</span></col>
  &nbsp;
  &nbsp;

  <col><span style="font-weight:bold">Time(Eastern)</span></col>
  &nbsp;
  &nbsp;
  <col><span style="font-weight:bold">Reservoir Elev. (behind dam)*</span</col>
  &nbsp;
  &nbsp;
  <col><span style="font-weight:bold">Tailwater Elev. (below dam)*</span></col>
  &nbsp;
  &nbsp;
  <col><span style="font-weight:bold">Avg Hourly Discharge*</span></col>
</tr>
</thead>
<tbody>

<?php foreach ($xml->RESULTSET->ROW as $obs) :?>
<tr>
  <td><?php echo $obs->obs_day; ?></td>
  <td><?php echo $obs->obs_hr; ?></td>
  <td><?php echo $obs->upstream_elev; ?></td>
  <td><?php echo $obs->downstream_elev; ?></td>
  <td><?php echo $obs->avg_hourly_discharge; ?></td>
</tr>
    <?php endforeach; ?>
  </tbody>
</table>

1 个答案:

答案 0 :(得分:0)

由于XML有2 <RESULTSET>个元素,RESULTSET->ROW只是选择第一个元素。因此,将其更改为RESULTSET[1]->ROW,您将获得数据。

您还需要确保为每个元素名称使用相同的大小写...

<?php foreach ($xml->RESULTSET[1]->ROW as $obs) :?>
<tr>
  <td><?php echo $obs->OBS_DAY; ?></td>
  <td><?php echo $obs->OBS_HR; ?></td>
  <td><?php echo $obs->UPSTREAM_ELEV; ?></td>
  <td><?php echo $obs->DOWNSTREAM_ELEV; ?></td>
  <td><?php echo $obs->AVG_HOURLY_DISCHARGE; ?></td>
</tr>
<?php endforeach; ?>