如果我只需要解析XML,那么下面两个代码片段之间的区别是什么?
1.使用SAXParser parse方法:
SAXParserFactory sfactory = SAXParserFactory.newInstance();
SAXParser parser = sfactory.newSAXParser();
parser.parse(new File(filename), new DocHandler());现在使用从SAXParser获取的XMLReader的parse方法
SAXParserFactory sfactory = SAXParserFactory.newInstance();
SAXParser parser = sfactory.newSAXParser();
XMLReader xmlparser = parser.getXMLReader();
xmlparser.setContentHandler(new DocHandler());
xmlparser.parse(new InputSource("test1.xml")); 尽管获得了更多的灵活性,但还有其他区别吗?
发布于 2012-12-14 21:46:21
SAXParser的parse方法只委托给XMLReader的内部实例,通常更方便。对于一些更高级的用例,你必须使用XMLReader。下面是一些例子
解析implementation
ErrorHandler
ContentHandler、EntityResolver或处理程序的不同类
发布于 2012-12-14 21:36:51
正如您注意到的,XMLReader属于org.xml.sax (来自http://www.saxproject.org/),而SAXParser属于javax.xml.parsers。SAXParser在内部使用XMLReader。您可以直接使用XMLReader
XMLReader xr = XMLReaderFactory.createXMLReader();
xr.setContentHandler(handler);
xr.setDTDHandler(handler);
...但是您会注意到,SAXParser使用起来更方便。也就是说,添加SAXParser是为了方便。
发布于 2012-12-14 20:51:47
http://docs.oracle.com/javase/1.5.0/docs/api/org/xml/sax/XMLReader.html。看看XML阅读器的链接,再看看下面的sax解析器链接。http://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/parsers/SAXParser.html。
使用不同的解析器取决于您希望解析器做什么。如果您正在修改、删除xml中的内容,您可以使用W3C Dom解析器。如果只想解析和获取元素,可以使用SAX解析器。有一些是有的。所以这真的取决于你想要什么。
https://stackoverflow.com/questions/13878998
复制相似问题