下面两个片段有什么区别,如果我只需要解析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"));
尽管获得了更大的灵活性,还有其他区别吗?
答案 0 :(得分:8)
parse
的{{1}}方法只是委托给SAXParser
的内部实例,通常更方便。对于某些更高级的用例,您必须使用XMLReader
。一些例子是
XMLReader
,ContentHandler
或EntityResolver
答案 1 :(得分:3)
您注意到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。
答案 2 :(得分:0)
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解析器。那里有几个。所以它真的取决于你想要的东西。