我有一个大约60到70个标签的xml文件。同时调用SAX Parsers的回调方法startElement,endElement,字符过量使用if else使代码变得非常 痛苦。有没有其他方法可以使我的代码更具可读性?
答案 0 :(得分:0)
还有其他方式,名为DOM
,StAx
等。选择您的灵活方式。但是,SAX在内存和时间方面更有效率。有关详细信息,请参阅:http://docs.oracle.com/javase/tutorial/jaxp/index.html
答案 1 :(得分:0)
据我所知,您希望根据SAX刚刚阅读的内容执行不同的方法。我想不出办法做到这一点。在我看来,你在if-else/switch
方法startElement,endElement,characters等中使用Handler
语句时遇到困难。
如果您发现if-else
语句太复杂,您可以从if子句中提取代码以分离方法,例如:
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (ELEMENT1.equalsIgnoreCase(qName)) {
createElement1();
} else if (ELEMENT2.equalsIgnoreCase(qName) {
createElement2();
} else {
createDefaultElement();
}
}
答案 2 :(得分:0)
检查XMLDog
您可以编写Expressions
然后在内联评估它们,避免痛苦的if tests
系列。另外一个好处是它使用流式解析器(SAX)并避免了XPath
所需的昂贵的内存中解析。