kepioo wrote: > Hi all, > > I am trying to write an xml aggregator, but so far, i've been failing > miserably. > > what i want to do : > > i have entries, in a list format :[[key1,value],[key2,value],[ > key3,value]], value] > > example : > [["route","23"],["equip","jr2"],["time","3pm"]],"my first value"] > [["route","23"],["equip","jr1"],["time","3pm"]],"my second value"] > [["route","23"],["equip","jr2"],["time","3pm"]],"my third value"] > [["route","24"],["equip","jr2"],["time","3pm"]],"my fourth value"] > [["route","25"],["equip","jr2"],["time","3pm"]],'"my fifth value"] >
[snip example data] > > > If anyone has an idea of implemetation or any code ( i was trying with > ElementTree... > (You should have posted the code you tried) The code below might help (though you should test it more than I have). The 'findall' function comes from here: http://gflanagan.net/site/python/elementfilter/elementfilter.py it's not the elementtree one. Gerard ---------------------------------- X = [[[["route","23"],["equip","jr2"],["time","3pm"]],"my first value"], [[["route","23"],["equip","jr1"],["time","3pm"]],"my second value"], [[["route","23"],["equip","jr2"],["time","3pm"]],"my third value"], [[["route","24"],["equip","jr2"],["time","3pm"]],"my fourth value"], [[["route","25"],["equip","jr2"],["time","3pm"]],"my fifth value"], [[["route","25"],["equip","jr2"],["time","4pm"]],"my sixth value"]] # reshape the data records = [] for info, data in X: record = [] for attr, val in info: record.append(val) record.append( data ) records.append( record ) for r in records: print r from elementtree.ElementTree import Element, SubElement, tostring from elementfilter import findall results = Element('results') for r in records: routeid, equipid, timeid, data = r route, equip, time = None, None, None existing_route = findall(results, "[EMAIL PROTECTED]'%s']" % routeid) if existing_route: route = existing_route[0] existing_equip = findall(route, "[EMAIL PROTECTED]'%s']" % equipid) if existing_equip: equip = existing_equip[0] existing_time = findall(equip, "[EMAIL PROTECTED]'%s']" % timeid) if existing_time: time = existing_time[0] route = route or SubElement(results, 'route', id=routeid) equip = equip or SubElement(route, 'equip', id=equipid) time = time or SubElement(equip, 'time', id=timeid) data = SubElement(time,'data') data.text = item print tostring(results) ------------------------------------------- -- http://mail.python.org/mailman/listinfo/python-list