我有理由将XMLReader与SAXParser一起使用吗?我看到这种用法非常多:
sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
LoginContentHandler uch = new LoginContentHandler();
xr.setContentHandler(uch);
xr.parse(new InputSource(in));
我总是这样使用解析器:
sp = spf.newSAXParser();
DefaultHandler dh = new LoginContentHandler();
sp.parse(in, dh);
有什么特别的原因吗?只是想知道因为我的方式更短,我真的不明白为什么我应该使用XMLReader。
答案 0 :(得分:5)
所以回答这个问题。
使用XMLReader的人假设有足够的内存将文件存储为树对象,并且能够在Log(n)时间遍历它以进行搜索。
另一方面,使用SAX直接意味着你正在使用基于事件的插件,这将是n次,但应该留下更少的内存占用量。
这是空间和速度之间的选择。
请注意有关此from SAX's own page:
的内容