我遇到了两个用StAX
解析文件的不同代码。一个快速的谷歌搜索告诉我,有两种方法可以解析:使用 游标API 并使用 迭代器API 。请告诉我两者之间的区别,从开发人员的角度来看哪一个更容易使用。
答案 0 :(得分:7)
您最有可能在Java Web Services Developer Pack教程或Java EE 5 tutorial中的StAX API部分找到答案。它们都包含我在下面复制的相同信息:
比较Cursor和Iterator API
在选择光标和之前 迭代器API,你应该注意几个 你可以做的事情 您无法使用的迭代器API 游标API:
从XMLEvent子类创建的对象是不可变的,也可以是 用于数组,列表和映射,以及 可以通过你的 应用程序甚至在解析器之后 继续进行后续活动。
您可以完全创建XMLEvent的子类型 新的信息项目或扩展 现有项目,但附加 方法
您可以更简单地在XML事件流中添加和删除事件 方式而不是游标API。
同样,保持一些一般性 制作时的建议 你的选择:
如果您正在编程特别受内存限制 环境,像J2ME,你可以做 更小,更高效的代码 游标API。
如果性能是您的最高优先级 - 例如,在创建时 低级库或 基础设施 - 游标API更多 高效。
如果要创建XML处理管道,请使用迭代器 API。
如果要修改事件流,请使用迭代器API。
如果您希望您的应用程序能够处理可插拔处理 的事件流,使用迭代器 API。
一般来说,如果你没有强烈的偏好,那么一种方式或者一种方式 另外,使用iterator API是 建议因为它更多 因此,灵活和可扩展 “面向未来”的应用程序。
迭代器API虽然推荐比游标API慢,因为游标不需要记住它已经解析过的先前节点;它提供了XML文档的只进行解析,并没有构造XMLEvent
对象的开销。显然,a benchmark表明,与StAX相比,SAX可能会更好地解析大型文档;您可能想验证是否可以重现数据集的基准测试结果。
答案 1 :(得分:-2)
如果你没有解析长XML文件,那么你可以简单地使用JDOM,JDOM在内存中加载整个XML并且速度较慢,但它很容易使用。