Discuss / Python / 1

def parseXml(xml_str):

# print(xml_str)

class DefaultSaxHandler(object):
    def start_element(self, name, attrs):
        if name == 'results':
            self.result = {}
            self.result['forecast'] = []
        if name == 'yweather:location':
            self.result['city'] = attrs['city']
        if name == 'yweather:forecast':
            ft= {}
            for k,v in attrs.items():
                ft[k] = v
            self.result['forecast'].append(ft)

    def end_element(self, name):
        if name == 'channel':
            print(self.result)

    def char_data(self, text):
        pass


handler = DefaultSaxHandler()
parser = ParserCreate()
parser.StartElementHandler = handler.start_element
parser.EndElementHandler = handler.end_element
parser.CharacterDataHandler = handler.char_data
parser.Parse(xml_str)

return handler.result

  • 1

Reply