Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:为什么要使用XMLReader?_Android_Xmlreader_Saxparser - Fatal编程技术网

Android:为什么要使用XMLReader?

Android:为什么要使用XMLReader?,android,xmlreader,saxparser,Android,Xmlreader,Saxparser,有什么理由让我在SAXParser中使用XMLReader吗?我经常看到这种用法: sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); LoginContentHandler uch = new LoginContentHandler(); xr.setContentHandler(uch); xr.parse(new InputSource(in))

有什么理由让我在SAXParser中使用XMLReader吗?我经常看到这种用法:

        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。

所以来回答这个问题

使用XMLReader的人假设有足够的内存将文件存储为树对象,并且能够在日志(n)时间遍历它进行搜索

另一方面,使用SAX straight意味着您使用的是一个基于事件的插件,它将在n时间内完成,但会留下更少的内存足迹

这是在空间和速度之间的选择


请注意关于这一

树vs基于事件的阅读,我认为:SAX不总是基于事件的吗?XMLreader应该将文件/流作为树加载到内存中:
最后,重要的是要记住,可以使用基于事件的API构建解析树,并且可以使用基于事件的API来遍历内存中的树。玩得开心