我有一个包含大约 60 到 70 个标签的 xml 文件。在调用 SAX Parsers startElement,endElement,characters 的回调方法时,过度使用 if else 会使代码非常痛苦。有没有其他方法可以使我的代码更具可读性?
问问题
512 次
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
还有其他方式,命名DOM
等StAx
。选择您灵活的方式。但是,SAX 在内存和时间上更有效。有关详细信息,请参阅: http ://docs.oracle.com/javase/tutorial/jaxp/index.html
于 2013-06-28T11:58:40.637 回答