Jump to content

XML Display Last Information Rather Than The First


michael.davis

Recommended Posts

Hi!  I am extracting the current lake level of my nearby lake and with the code listed below, I am only displaying the very first lake level from 11AM.  I am in need of the last lake level from 6PM.  Can someone point me in the right direction.

 

Listed below is my code:

 

<?php
//old Hickory
$summerpool = 445.00;
$data = file_get_contents('http://www.tva.gov/lakes/xml/OHH_R.xml');
$regex = '@<UPSTREAM_ELEV>.*?</UPSTREAM_ELEV>@';
preg_match($regex, $data, $match);
$elev = substr(substr($match[0], 15), 0, -16);
if ($elev == $summerpool)
echo "Level: $elev";
$average = $summerpool - $match[1];
if ($elev > $summerpool)
echo "Level: $elev";
$average = $summerpool - $match[1];
if ($elev < $summerpool)
echo "Level: $elev";
$average = $elev - $summerpool;


?>

 

 

The XML from which I grab the data:

 

 

<DBI driver="rvsp">
<RESULTSET>
<ROW>
<MSG_TXT>
Old Hickory will be spilling, without generation, until further notice.
</MSG_TXT>
</ROW>
</RESULTSET>
<RESULTSET>
<ROW>
<OBS_DAY>6/22/2012</OBS_DAY>
<OBS_HR>11 am</OBS_HR>
<UPSTREAM_ELEV>444.96</UPSTREAM_ELEV>
<DOWNSTREAM_ELEV>386.06</DOWNSTREAM_ELEV>
<AVG_HOURLY_DISCHARGE>4,300</AVG_HOURLY_DISCHARGE>
</ROW>
<ROW>
<OBS_DAY>6/22/2012</OBS_DAY>
<OBS_HR>12 pm</OBS_HR>
<UPSTREAM_ELEV>444.91</UPSTREAM_ELEV>
<DOWNSTREAM_ELEV>385.91</DOWNSTREAM_ELEV>
<AVG_HOURLY_DISCHARGE>4,300</AVG_HOURLY_DISCHARGE>
</ROW>
<ROW>
<OBS_DAY>6/22/2012</OBS_DAY>
<OBS_HR>1 pm</OBS_HR>
<UPSTREAM_ELEV>444.85</UPSTREAM_ELEV>
<DOWNSTREAM_ELEV>385.85</DOWNSTREAM_ELEV>
<AVG_HOURLY_DISCHARGE>4,300</AVG_HOURLY_DISCHARGE>
</ROW>
<ROW>
<OBS_DAY>6/22/2012</OBS_DAY>
<OBS_HR>2 pm</OBS_HR>
<UPSTREAM_ELEV>444.91</UPSTREAM_ELEV>
<DOWNSTREAM_ELEV>385.91</DOWNSTREAM_ELEV>
<AVG_HOURLY_DISCHARGE>4,300</AVG_HOURLY_DISCHARGE>
</ROW>
<ROW>
<OBS_DAY>6/22/2012</OBS_DAY>
<OBS_HR>3 pm</OBS_HR>
<UPSTREAM_ELEV>444.95</UPSTREAM_ELEV>
<DOWNSTREAM_ELEV>386.05</DOWNSTREAM_ELEV>
<AVG_HOURLY_DISCHARGE>4,300</AVG_HOURLY_DISCHARGE>
</ROW>
<ROW>
<OBS_DAY>6/22/2012</OBS_DAY>
<OBS_HR>4 pm</OBS_HR>
<UPSTREAM_ELEV>444.97</UPSTREAM_ELEV>
<DOWNSTREAM_ELEV>385.87</DOWNSTREAM_ELEV>
<AVG_HOURLY_DISCHARGE>4,300</AVG_HOURLY_DISCHARGE>
</ROW>
<ROW>
<OBS_DAY>6/22/2012</OBS_DAY>
<OBS_HR>5 pm</OBS_HR>
<UPSTREAM_ELEV>444.93</UPSTREAM_ELEV>
<DOWNSTREAM_ELEV>385.83</DOWNSTREAM_ELEV>
<AVG_HOURLY_DISCHARGE>4,300</AVG_HOURLY_DISCHARGE>
</ROW>
<ROW>
<OBS_DAY>6/22/2012</OBS_DAY>
<OBS_HR>6 pm</OBS_HR>
<UPSTREAM_ELEV>444.95</UPSTREAM_ELEV>
<DOWNSTREAM_ELEV>385.85</DOWNSTREAM_ELEV>
<AVG_HOURLY_DISCHARGE>4,300</AVG_HOURLY_DISCHARGE>
</ROW>
</RESULTSET>
</DBI>

 

 

Thanks!

Mike

$xml = new SimpleXMLElement('http://www.tva.gov/lakes/xml/OHH_R.xml', 0, true);
$row = current($xml->xpath('/DBI/RESULTSET/ROW[uPSTREAM_ELEV][last()]'));
echo trim($row->UPSTREAM_ELEV);

The trim() is because of the whitespace they stick in their XML :shrug:

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.