michael.davis Posted June 23, 2012 Share Posted June 23, 2012 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 Link to comment https://forums.phpfreaks.com/topic/264643-xml-display-last-information-rather-than-the-first/ Share on other sites More sharing options...
requinix Posted June 23, 2012 Share Posted June 23, 2012 $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 Link to comment https://forums.phpfreaks.com/topic/264643-xml-display-last-information-rather-than-the-first/#findComment-1356310 Share on other sites More sharing options...
michael.davis Posted June 23, 2012 Author Share Posted June 23, 2012 Awesome! Thank you, Requinix! You Rock! Link to comment https://forums.phpfreaks.com/topic/264643-xml-display-last-information-rather-than-the-first/#findComment-1356313 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.