Discuss / Python / 虽然做通了,但是感觉还有没有学透的地方,请大家指导

虽然做通了,但是感觉还有没有学透的地方,请大家指导

Topic source

gd83594394

#1 Created at ... [Delete] [Delete and Lock User]
def parseXml(xml_str):
    class DefaultSaxHandler(object):
        def __init__(self):
            self.dic = {}
        def start_element(self, name, attrs):
            if name == 'yweather:location':
                self.dic = attrs
    handler = DefaultSaxHandler()
    parser = ParserCreate()
    parser.StartElementHandler = handler.start_element
    parser.Parse(xml_str)
    return handler.dic

经过反复实践,有以下经验,不知道对不对:

定义类DefaultSaxHandler的时候,类的方法start_element本来是可以直接return一个结果的,但是,start_element需要传入参数,偏偏这些参数又必须由解析器parser来产生传入,而parser又反过来依赖于handler.start_element,所以形成逻辑上的死循环,于是最终只能用__init__的self.dic来实现目的。

感觉上貌似做通了,但是还是有觉得没完全掌握,恳请各位大神指导。

gd83594394

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

XML和HTML解析 - CSDN博客 https://blog.csdn.net/langqing12345/article/details/45877027

这篇可以参考一下


  • 1

Reply