我遇到了两个用于解析文件的不同代码StAX.一个快速的谷歌搜索告诉我,有两种方法可以解析:使用游标API和使用迭代器API.请告诉我两者之间的区别,从开发人员的角度来看哪一个更容易使用.
您最有可能在Java Web Services Developer Pack教程或Java EE 5教程的StAX API部分中找到答案.它们都包含我在下面复制的相同信息:
比较Cursor和Iterator API
在选择游标和迭代器API之前,您应该注意使用游标API无法执行的迭代器API的一些事情:
从XMLEvent的子类创建的对象是不可改变的,并且可以在阵列中,列表和地图中使用,并且可以通过你的应用程序通过解析器转移到后续事件后还是一样.
您可以创建XMLEvent的子类型,这些子类型可以是全新的信息项,也可以是现有项的扩展名,但需要使用其他方法.
您可以使用比游标API更简单的方式在XML事件流中添加和删除事件.
同样,在做出选择时,请记住一些一般性建议:
如果您正在为特定于内存的环境(如J2ME)进行编程,则可以使用游标API生成更小,更高效的代码.
如果性能是您的最高优先级 - 例如,在创建低级库或基础结构时 - 游标API更有效.
如果要创建XML处理管道,请使用迭代器API.
如果要修改事件流,请使用迭代器API.
如果您希望应用程序能够处理事件流的可插入处理,请使用迭代器API.
一般来说,如果你没有强烈的偏好的一种方式或其他,使用迭代器API推荐,因为它是更加灵活和可扩展性,从而"面向未来的"你的应用程序.
虽然推荐使用迭代器API比游标API慢,因为游标不需要记住它已经解析过的先前节点; 它提供了XML文档的只进行解析,并且没有构造XMLEvent对象的开销.显然,一个基准测试表明,与StAX相比,SAX可能会更好地解析大型文档; 您可能想验证是否可以重现数据集的基准测试结果.