使用包含太多标记的SAX解析器解析XML文件

时间:2013-06-28 11:51:01

标签: java parsing xml-parsing saxparser

我有一个大约60到70个标签的xml文件。同时调用SAX Parsers的回调方法startElement,endElement,字符过量使用if else使代码变得非常 痛苦。有没有其他方法可以使我的代码更具可读性?

3 个答案:

答案 0 :(得分:0)

还有其他方式,名为DOMStAx等。选择您的灵活方式。但是,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所需的昂贵的内存中解析。