I had trouble exporting data directly from OSM, so followed a link from there to the Overpass API the only difference I can see so far is that I have to change instances of
Cases[nodeElem, {__, "lat" -> lat_, "lon" -> lon_} -> {lat, lon}
to
Cases[nodeElem, {__, "lat" -> lat_, "lon" -> lon_, __} -> {lat, lon}
...in order to get the early stages of processing to work the same as the examples. I assume there's just a slight difference in XML structure.