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 Quote 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 Quote 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! Quote 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
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.