5

有什么理由我应该将 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。

4

1 回答 1

5

所以回答这个问题。

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

另一方面,直接使用 SAX 意味着您正在使用基于事件的插件,该插件将在 n 时间内出现,但应该留下更少的内存占用。

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

请注意从 SAX 自己的页面上阅读的内容:

于 2011-04-23T05:28:35.470 回答