框架代码其实也没那么难,大家不要看着源码就害怕,现在去看 Tomcat 3.0的代码,保证还是看得懂一半,照着撸一遍基本上很多问题都能搞定了。这次我们就模拟 Tomcat 中的 Digester(xml解析工具)来仿写一个相当简易的版本。上一篇说了如何利用 sax 模型来解析 xml,但是,该程序还有相当多的优化空间。这一篇,我们一起将程序进行一些优化。之前的版本有什么问题呢?请看:
1 @Override 2 public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { 3 System.out.println("startElement: " + qName + " It's the " + eventOrderCounter.getAndIncrement() + " one"); 4 5 if ("Coder".equals(qName)) { 6 7 Coder coder = new Coder(); 8 9 setProperties(attributes,coder); 10 11 stack.push(coder); 12 } else if ("Girl".equals(qName)) { 13 14 Girl girl = new Girl(); 15 setProperties(attributes, girl); 16 17 Coder coder = (Coder) stack.peek(); 18 coder.setGirl(girl); 19 } 20 }