class Ox(object): def initialize(self): print "" print "" def add_node(self,node): nodestring = "" nodestring = "" else: nodestring = "%s />" % nodestring print nodestring def add_segment(self, seg): segstring = "" else: segstring = "%s />" % segstring print segstring def add_multi(self,multi, type): print "<%s id='%s' timestamp='%s'>" % (type, multi['id'], multi['timestamp']) for i in multi['segs']: print "" % i['id'] self.print_tags(multi['tags']) print ""%type def print_tags(self,tags): if tags: for i in tags.split(";"): (k, v) = i.split("=") if (k and v): k = k.replace("&", "&").replace("<", "<").replace(">", ">") v = v.replace("&", "&").replace("<", "<").replace(">", ">") print "" % (k, v) def finish(self): print "" if __name__ == "__main__": o = Ox() o.initialize() o.add_node({'id':1, 'lat':2, 'lon':3, 'timestamp': 4, 'visible': 5, 'tags': "foo=bar;baz=qux"}) o.add_node({'id':1, 'lat':2, 'lon':3, 'timestamp': 4, 'visible': 5}) o.add_multi({'id':2, 'timestamp':'5', 'segs':[{'id':10}, {'id': 15}], 'tags':"foo=bar"}, "way") o.add_segment({'id':1, 'lat':2, 'lon':3}) o.add_segment({'id':1, 'lat':2, 'lon':3, 'tags': "foo=bar>;baz=qux<"}) o.add_segment({'id':1, 'lat':2, 'lon':3, 'tags': "foo=&;&=qux"}) o.finish()