1

我正在尝试实现一个简单的 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 外,所有其他处理程序均已正确调用。

谢谢你。

4

3 回答 3

4

我敢打赌你的Attributes课程导入不好,应该是org.xml.sax.Attributes

始终使用@Override,它旨在保护您免受这个确切的问题。

于 2013-02-22T15:41:58.103 回答
2

也许你输入了错误的DefaultHandlerAttributes类?

确保您已导入:

org.xml.sax.helpers.DefaultHandler
org.xml.sax.Attributes
于 2013-02-22T15:44:57.500 回答
0

在我看来,最简单的方法之一不是手动编写此方法,而是使用 ctrl+space,并选择想要从上下文菜单中覆盖方法(在 Eclipse 中)。IDE会自动生成方法,包括注解@Override,同时导入必要的包。

于 2014-09-14T08:04:44.360 回答