Discuss / Python / work

4Neutrino

#1 Created at ... [Delete] [Delete and Lock User]

from xml.parsers.expat import ParserCreate from urllib import request

class YHWeatherSaxHandler(object): def init(self, dict): self.data = dict

def start_element(self, name, attrs):
    if name == 'yweather:location':
        self.data['city'] = attrs['city']

    elif name == 'yweather:forecast':
        if not 'forecast' in self.data:
            self.data['forecast'] = []

        self.data['forecast'].append({
            'date': attrs['date'],
            'high': attrs['high'],
            'low' : attrs['low']
        })

def parseXml(xml_str):

#print(xml_str)

data = dict()
handler = YHWeatherSaxHandler(data)
parser = ParserCreate()
parser.StartElementHandler = handler.start_element

parser.Parse(xml_str)
return data

4Neutrino

#2 Created at ... [Delete] [Delete and Lock User]

简化下: class YHWeatherSaxHandler(object): def init(self): self.data = { 'forecast': [] }

def start_element(self, name, attrs):
    if name == 'yweather:location':
        self.data['city'] = attrs['city']

    elif name == 'yweather:forecast':
        self.data['forecast'].append({
            'date': attrs['date'],
            'high': attrs['high'],
            'low' : attrs['low']
        })

def parseXml(xml_str):

#print(xml_str)

handler = YHWeatherSaxHandler()
parser = ParserCreate()
parser.StartElementHandler = handler.start_element

parser.Parse(xml_str)
return handler.data

  • 1

Reply