SAXParser和XMLReader之间的区别

sak*_*ura 7 java saxparser xml-parsing

下面两个片段有什么区别,如果我只需要解析XML?

1.使用SAXParser parse方法:

SAXParserFactory sfactory = SAXParserFactory.newInstance();
SAXParser parser = sfactory.newSAXParser();
parser.parse(new File(filename), new DocHandler());
Run Code Online (Sandbox Code Playgroud)

现在使用parse从SAXParser获取的XMLReader 方法

SAXParserFactory sfactory = SAXParserFactory.newInstance();
SAXParser parser = sfactory.newSAXParser();
XMLReader xmlparser = parser.getXMLReader();
xmlparser.setContentHandler(new DocHandler());
xmlparser.parse(new InputSource("test1.xml"));   
Run Code Online (Sandbox Code Playgroud)

尽管获得了更大的灵活性,还有其他区别吗?

Jör*_*ann 8

parse方法SAXParser仅仅委托给一个内部的instanceof XMLReader和通常更方便.对于一些更高级的用例,您必须使用XMLReader.一些例子是

  • 设置实现的非标准功能
  • 将不同的类设置为ContentHandler,EntityResolverErrorHandler
  • 解析时切换处理程序