# Read in xml as text and return it's Node object representation
def self.from_xml(xml, create=false)
begin
- p = XML::Parser.new
- p.string = xml
+ p = XML::Parser.string(xml)
doc = p.parse
doc.find('//osm/node').each do |pt|
raise OSM::APIBadXMLError.new("node", pt, "lon missing") if pt['lon'].nil?
node.lat = pt['lat'].to_f
node.lon = pt['lon'].to_f
+ raise OSM::APIBadXMLError.new("node", pt, "changeset id missing") if pt['changeset'].nil?
node.changeset_id = pt['changeset'].to_i
raise OSM::APIBadUserInput.new("The node is outside this world") unless node.in_world?
# visible if it says it is, or as the default if the attribute
# is missing.
- node.visible = pt['visible'].nil? or pt['visible'] == 'true'
+ # Don't need to set the visibility, when it is set explicitly in the create/update/delete
+ #node.visible = pt['visible'].nil? or pt['visible'] == 'true'
- if create
- node.timestamp = Time.now
- else
- if pt['timestamp']
- node.timestamp = Time.parse(pt['timestamp'])
- end
- end
+ # We don't care about the time, as it is explicitly set on create/update/delete
tags = []
def create_with_history(user)
check_create_consistency(self, user)
+ self.id = nil
self.version = 0
self.visible = true