Java 是否有任何sax库支持根据某些条件提前退出?
我有一个xml文件,看起来像:Java 是否有任何sax库支持根据某些条件提前退出?,java,xml,sax,Java,Xml,Sax,我有一个xml文件,看起来像: <root> <application-key>ABC2349293493</application-key> ... .. </root> ABC2349293493 ... .. xml文件相当大,我只需要获取应用程序密钥,就可以查看此请求是否应该受到速率限制 我的服务器受到重击,因此我需要一种方法来限制请求的速率,而不必读取整个xml 由于内存占用,DOM是不可能的 我对SAX很满意,但对于xerces,
<root>
<application-key>ABC2349293493</application-key>
...
..
</root>
ABC2349293493
...
..
xml文件相当大,我只需要获取应用程序密钥,就可以查看此请求是否应该受到速率限制
我的服务器受到重击,因此我需要一种方法来限制请求的速率,而不必读取整个xml
由于内存占用,DOM是不可能的
我对SAX很满意,但对于xerces,您无法停止xml的处理,因为它是一个推送模型。到目前为止,我知道的唯一方法是抛出异常
其他sax库是否支持提前正常退出?选择正确的实现也很重要:
另外,我仍然认为SAX的操作方式(抛出异常)更简单。异常确实是规范中可用于退出解析过程的唯一选项。如概述或描述的
如果您真的不想使用异常,请切换到拉式解析器,但我认为这并不重要。像StAX这样的拉式解析器可以很自然地做到这一点。IME通常也是一种更方便的编程模型。你认为抛出异常会使它比stax慢吗?@Blankman在没有分析的情况下,很难判断哪一种性能更好。但我认为这对于这个简单的案例来说并不重要。但是它会导致性能问题吗?这就是我所关心的。“我要测试它,但理论上例外是缓慢的,对吗?”布兰克曼——“理论上”与什么相比?与执行单个机器指令相比,可能是这样。与解析xml相比,这是值得怀疑的。