StAX Cursor API和Iterator API有什么区别?

时间:2011-06-25 04:12:04

标签: java xml stax

我遇到了两个用StAX解析文件的不同代码。一个快速的谷歌搜索告诉我,有两种方法可以解析:使用 游标API 并使用 迭代器API 。请告诉我两者之间的区别,从开发人员的角度来看哪一个更容易使用。

2 个答案:

答案 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并且速度较慢,但​​它很容易使用。

jdom