Have you tried simplified code on a simplified XML file, playing with it in the shell to get a feel for what you can and can't do? And built up from there.
I'm sorry that I can't be more direct. I always reach for lxml and its elementTree emulation when I have XML to parse. Bill On Tue, Oct 23, 2012 at 6:18 AM, MikeKJ <mike.jo...@paston.co.uk> wrote: > Ok so I have realised that what I think I need is a dict of dicts > so far I have a dict, stuff which will be populated by boat and engine > BUT it doesnt seem to work using > for z in [boat, engine]: > stuff.update(z) > to populate stuff but still seem to be getting a single boat result and no > engine dict data > > from xml.dom import minidom > from xml.dom.minidom import parseString > url = > "https://services.boatwizard.com/bridge/events/ae0324ff-e1a5-4a77-9783-f41248bfa975/boats?status=on" > dom = minidom.parse(urllib2.urlopen(url)) > > stuff = {} > for x in dom.getElementsByTagName('VehicleRemarketingBoatLineItem'): > boat = {} > for node in x.getElementsByTagName('VehicleRemarketingBoat'): > name_list = node.getElementsByTagName('MakeString') > for n in name_list: > name = n.childNodes[0].nodeValue > boat['name'] = name > year_list = node.getElementsByTagName('ModelYear') > for y in year_list: > year = y.childNodes[0].nodeValue > boat['year'] = year > model_list = node.getElementsByTagName('Model') > for m in model_list: > model = m.childNodes[0].nodeValue > boat['model'] = model > length_group = node.getElementsByTagName('BoatLengthGroup') > for x in length_group: > n_l = node.getElementsByTagName('BoatLengthCode')[:1] > for l in n_l: > length_code = l.childNodes[0].nodeValue > boat['length_code'] = length_code > nlm = node.getElementsByTagName('BoatLengthMeasure')[:1] > for lm in nlm: > nominal_length = lm.childNodes[0].nodeValue > boat['nominal_length'] = nominal_length > loa_list = node.getElementsByTagName('BoatLengthCode')[:2] > for loa in loa_list: > loa_code = loa.childNodes[0].nodeValue > boat['loa_code'] = loa_code > loa_measure_list = > node.getElementsByTagName('BoatLengthMeasure')[:2] > for lm in loa_measure_list: > loa_measure = lm.childNodes[0].nodeValue > boat['loa_measure'] = loa_measure > l_o_list = node.getElementsByTagName('BoatLengthCode')[:3] > for loo in l_o_list: > length_overall_code = loo.childNodes[0].nodeValue > boat['length_overall_code'] = length_overall_code > l_o_measure_list = > node.getElementsByTagName('BoatLengthMeasure')[:3] > for lo in l_o_measure_list: > length_overall_measure = lo.childNodes[0].nodeValue > boat['length_overall_measure'] = length_overall_measure > bridge_list = > node.getElementsByTagName('BridgeClearanceMeasure') > for bl in bridge_list: > bridge_clearance = bl.childNodes[0].nodeValue > boat['bridge_clearance'] = bridge_clearance > beam_list = node.getElementsByTagName('BeamMeasure') > for bm in beam_list: > beam = bm.childNodes[0].nodeValue > boat['beam'] = beam > fuel_list = > node.getElementsByTagName('FuelTankCapacityMeasure') > for f in fuel_list: > fuel_capacity = f.childNodes[0].nodeValue > boat['fuel_capacity'] = fuel_capacity > hold_list = > node.getElementsByTagName('HoldingTankCapacityMeasure') > for h in hold_list: > hold_capacity = f.childNodes[0].nodeValue > boat['hold_capacity'] = hold_capacity > water_list = > node.getElementsByTagName('WaterTankCapacityMeasure') > for w in water_list: > water_capacity = w.childNodes[0].nodeValue > boat['water_capacity'] = water_capacity > cat_code_list = node.getElementsByTagName('BoatCategoryCode') > for c in cat_code_list: > category_code = c.childNodes[0].nodeValue > boat['category_code'] = category_code > boat_class_group = node.getElementsByTagName('BoatClassGroup') > for x in boat_class_group: > bcc1 = node.getElementsByTagName('BoatClassCode')[:1] > for b in bcc1: > boat_class_code = b.childNodes[0].nodeValue > boat['boat_class_code'] = boat_class_code > pbci = > node.getElementsByTagName('PrimaryBoatClassIndicator')[:1] > for p in pbci: > primary_boat_class_indicator = p.childNodes[0].nodeValue > boat['primary_boat_class_indicator'] = > primary_boat_class_indicator > bcc2 = node.getElementsByTagName('BoatClassCode')[:2] > for b in bcc2: > second_boat_class_code = b.childNodes[0].nodeValue > boat['second_boat_call_code'] = second_boat_class_code > sbci = > node.getElementsByTagName('PrimaryBoatClassIndicator')[:2] > for p in sbci: > secondary_boat_class_indicator = > p.childNodes[0].nodeValue > boat['secondary_boat_class_indicator'] = > secondary_boat_class_indicator > cruise_list = node.getElementsByTagName('CruisingSpeedMeasure') > for cr in cruise_list: > cruising_speed = cr.childNodes[0].nodeValue > boat['cruising_speed'] = cruising_speed > engine_list = > node.getElementsByTagName('TotalEnginePowerQuantity') > for e in engine_list: > engine_power = e.childNodes[0].nodeValue > boat['engine_power'] = engine_power > berth_list = node.getElementsByTagName('NumberOfBerthsNumeric') > for b in berth_list: > number_berths = b.childNodes[0].nodeValue > boat['number_berths'] = number_berths > cabin_list = node.getElementsByTagName('NumberOfCabinsNumeric') > for b in cabin_list: > number_cabins = b.childNodes[0].nodeValue > boat['number_cabins'] = number_cabins > cabin_headroom_list = > node.getElementsByTagName('CabinHeadroomMeasure') > for b in cabin_headroom_list: > cabin_headroom = b.childNodes[0].nodeValue > boat['cabin_headroom'] = cabin_headroom > heads_list = node.getElementsByTagName('NumberOfHeadsNumeric') > for b in heads_list: > number_heads = b.childNodes[0].nodeValue > boat['number_heads'] = number_heads > general_desc_list = > node.getElementsByTagName('GeneralBoatDescription') > for b in general_desc_list: > general_description = b.childNodes[0].nodeValue > boat['general_description'] = general_description > builder_list = node.getElementsByTagName('BuilderName') > for b in builder_list: > builder = b.childNodes[0].nodeValue > boat['builder'] = builder > hull_list = node.getElementsByTagName('BoatHullMaterialCode') > for b in hull_list: > hull_construction = b.childNodes[0].nodeValue > boat['hull_construction'] = hull_construction > max_speed_list = > node.getElementsByTagName('MaximumSpeedMeasure') > for b in max_speed_list: > max_speed = b.childNodes[0].nodeValue > boat['max_speed'] = max_speed > drive_type_list = node.getElementsByTagName('DriveTypeCode') > for b in drive_type_list: > drive_type = b.childNodes[0].nodeValue > boat['drive_type'] = drive_type > tank_group = node.getElementsByTagName('Tank') > for x in tank_group: > tank1_use = node.getElementsByTagName('TankUsageCode')[:1] > for b in tank1_use: > tank1_use = b.childNodes[0].nodeValue > boat['tank1_use'] = tank1_use > tank1_cap = > node.getElementsByTagName('TankCapacityMeasure')[:1] > for b in tank1_cap: > tank1_cap = b.childNodes[0].nodeValue > boat['tank1_cap'] = tank1_cap > tank1_num = > node.getElementsByTagName('TankCountNumeric')[:1] > for b in tank1_num: > tank1_count = b.childNodes[0].nodeValue > boat['tank1_count'] = tank1_count > tank2_use = node.getElementsByTagName('TankUsageCode')[:2] > for b in tank2_use: > tank2_use = b.childNodes[0].nodeValue > boat['tank2_use'] = tank2_use > tank2_cap = > node.getElementsByTagName('TankCapacityMeasure')[:2] > for b in tank2_cap: > tank2_cap = b.childNodes[0].nodeValue > boat['tank2_cap'] = tank2_cap > tank2_num = > node.getElementsByTagName('TankCountNumeric')[:2] > for b in tank2_num: > tank2_count = b.childNodes[0].nodeValue > boat['tank2_count'] = tank2_count > accom_group = node.getElementsByTagName('Accommodation') > for x in accom_group: > acc1_use = > node.getElementsByTagName('AcommodationTypeCode')[:1] > for b in acc1_use: > acc1_use = b.childNodes[0].nodeValue > boat['acc1_use'] = acc1_use > acc1_num = > node.getElementsByTagName('AccommodationCountNumeric')[:1] > for b in acc1_num: > acc1_count = b.childNodes[0].nodeValue > boat['acc1_count'] = acc1_count > acc2_use = > node.getElementsByTagName('AcommodationTypeCode')[:2] > for b in acc2_use: > acc2_use = b.childNodes[0].nodeValue > boat['acc2_use'] = acc1_use > acc2_num = > node.getElementsByTagName('AccommodationCountNumeric')[:2] > for b in acc2_num: > acc2_count = b.childNodes[0].nodeValue > boat['acc2_count'] = acc1_count > acc3_use = > node.getElementsByTagName('AcommodationTypeCode')[:3] > for b in acc3_use: > acc3_use = b.childNodes[0].nodeValue > boat['acc3_use'] = acc1_use > acc3_num = > node.getElementsByTagName('AccommodationCountNumeric')[:3] > for b in acc3_num: > acc3_count = b.childNodes[0].nodeValue > boat['acc3_count'] = acc1_count > status_list = node.getElementsByTagName('SaleStatus') > for b in status_list: > sale_status = b.childNodes[0].nodeValue > boat['sale_status'] = sale_status > engine = {} > for node in > x.getElementsByTagName('VehicleRemarketingEngineLineItem'): > engine_group = > node.getElementsByTagName('VehicleRemarketingEngine') > for x in engine_group: > eng_list = node.getElementsByTagName('MakeString') > for b in eng_list: > eng_mfr = b.childNodes[0].nodeValue > engine['eng_mfr'] = eng_mfr > eng_mod_list = node.getElementsByTagName('Model') > for b in eng_mod_list: > eng_model = b.childNodes[0].nodeValue > engine['eng_model'] = eng_model > eng_type_list = > node.getElementsByTagName('BoatEngineTypeCode') > for b in eng_type_list: > eng_type = b.childNodes[0].nodeValue > engine['eng_type'] = eng_type > eng_fuel_list = node.getElementsByTagName('FuelTypeCode') > for b in eng_fuel_list: > eng_fuel = b.childNodes[0].nodeValue > engine['eng_fuel'] = eng_fuel > eng_prop_list = node.getElementsByTagName('PropellerType') > for b in eng_prop_list: > propeller = b.childNodes[0].nodeValue > engine['propeller'] = propeller > for z in [boat, engine]: > stuff.update(z) > raise NameError(stuff) > > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/django-users/-/laLu5FvsQZ0J. > To post to this group, send email to django-users@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.