0

我有一个包含大约 60 到 70 个标签的 xml 文件。在调用 SAX Parsers startElement,endElement,characters 的回调方法时,过度使用 if else 会使代码非常痛苦。有没有其他方法可以使我的代码更具可读性?

4

3 回答 3

0

据我了解,您希望根据 SAX 刚刚读取的内容执行不同的方法。我想不出办法来做到这一点。在我看来,你被困if-else/switch在你的Handler在方法 startElement、endElement、characters 等

如果您发现您的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();
    }
}
于 2013-06-28T13:14:29.767 回答
0

检查XMLDog

您可以编写Expressions它们,然后在以后内联评估它们,避免痛苦的if tests. 另一个好处是它使用流式解析器 (SAX) 并避免了所需的昂贵的内存解析XPath

于 2013-06-28T14:04:27.233 回答
0

还有其他方式,命名DOMStAx。选择您灵活的方式。但是,SAX 在内存和时间上更有效。有关详细信息,请参阅: http ://docs.oracle.com/javase/tutorial/jaxp/index.html

于 2013-06-28T11:58:40.637 回答