我正在尝试实现一个简单的SAX解析器。
public class XmlParser {
public parseXML(File inputFile) {
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser parser = factory.newSAXParser();
SaxHandler handler = new SaxHandler();
parser.parse(inputFile, handler);
} ....
}
private static class SaxHandler extends DefaultHandler {
public void startElement(String uri, String localName,
String qName, Attributes attributes) throws SAXException {
}
public void characters(char ch[], int start, int length)
throws SAXException {
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
}
}
}
问题是我似乎无法覆盖startElement方法。当我添加@Override时,会出现“方法不覆盖或从超类型实现方法”消息。除了startElement之外,所有其他处理程序都被正确调用。
谢谢。
答案 0 :(得分:4)
我打赌你对Attributes
课程的导入不好,应该是org.xml.sax.Attributes
。
始终使用@Override
,它旨在保护您免受此严重问题的影响。
答案 1 :(得分:2)
您是否导入了错误的DefaultHandler
或Attributes
类?
确保您已导入:
org.xml.sax.helpers.DefaultHandler
org.xml.sax.Attributes
答案 2 :(得分:0)
在我看来,最简单的方法之一是不要手动编写这个方法,而是使用ctrl + space,并选择想要从上下文菜单(在Eclipse中)覆盖方法。 IDE将自动生成方法,包括注释@Override,同时将导入必要的包。