Nathan Harmston wrote: > However it is quite messy at the moment. The main reason is that Python > doesnt have a switch statement.
a switch statement wouldn't save you a single line, so I find it a bit hard to believe that it's the main reason... > def startElement(self,name,attributes): > if name == "sbml": > s = Sbml(attributes['xmlns'], attributes['version'], > attributes['level']) > self.sbmlDict['sbml'] = s > elif name == "model": > m = Model(attributes['id'], attributes['name']) > self.sbmlDict['model'] = m > elif name == "listOfCompartments": > self.inListOfCompartments = bool(1) > elif name == "compartment" and self.inListOfCompartments: > c = Compartment(attributes['id'], > attributes['name']) > self.tempList.append(c) > .......................................snip > > I would use a dictionary for this, but this would require the use of many > extra methods for each tag name, and this would lead to clutter aswell. Does > anyone have any suggestions for reducing the number of lines and making my > code look neater than a large amount of methods or elif statements. forget about SAX and silly state machines, and use a modern XML library; here's some ElementTree inspiration: http://effbot.org/zone/element-iterparse.htm#incremental-decoding there are several other newer libraries that provide built-in data binding support, including lxml.objectify and Amara. </F> -- http://mail.python.org/mailman/listinfo/python-list