SAX 解析XML:
SAX与DOM不同,在解析XML文件时是边解析边处理的。解析过程为先生产一个解析工厂(SAXParserFactory),由工厂生产一个解析器(SAXParser),再由解析器生产阅读器(XMLReader),通过阅读器的parser(String systemId)方法解析XML文件。
SAX2核心的处理程序基类有四个ContentHandler、ErrorHandLer、DTDHandler、EntityResolver,其中ContentHandler是SAX所有应用程序的主要接口。当阅读器解析到标签头/尾(startElement、endElement),标签内容(Characters)等数据时会自动调用对应函数并把标签数据以参数形式传入,供程序员处理。应注意的是,处理器要在解析文件前注册。
DefaultHandler是上述四个基类的实现类,提供所有回调的默认函数的实现。可根据开发需重写仅需实现的部分接口。
遇到问题:为阅读器注册了BeanListHander处理器类,在获取下XML文件中的姓名信息时,发现控制台输出两次name,第二个为空。
发现SAX 解析时空格、换行都会作为characters信息被解析,触发characters()函数,可是此时的element_tag仍为”student”,所以第二次的换行触发把name的内容清除了。
解决:在endElement()函数中把element_tag清空,问题解决。
--PS:大四才开始学习web开发,而且工作还没着落,又不考研,以后的路应该挺难走的,此文为人生第一篇博客文章,特此标记,供以后回味蹒跚成长之路。