Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有任何sax库支持根据某些条件提前退出?_Java_Xml_Sax - Fatal编程技术网

Java 是否有任何sax库支持根据某些条件提前退出?

Java 是否有任何sax库支持根据某些条件提前退出?,java,xml,sax,Java,Xml,Sax,我有一个xml文件,看起来像: <root> <application-key>ABC2349293493</application-key> ... .. </root> ABC2349293493 ... .. xml文件相当大,我只需要获取应用程序密钥,就可以查看此请求是否应该受到速率限制 我的服务器受到重击,因此我需要一种方法来限制请求的速率,而不必读取整个xml 由于内存占用,DOM是不可能的 我对SAX很满意,但对于xerces,

我有一个xml文件,看起来像:

<root>
<application-key>ABC2349293493</application-key>
...
..
</root>

ABC2349293493
...
..
xml文件相当大,我只需要获取应用程序密钥,就可以查看此请求是否应该受到速率限制

我的服务器受到重击,因此我需要一种方法来限制请求的速率,而不必读取整个xml

由于内存占用,DOM是不可能的

我对SAX很满意,但对于xerces,您无法停止xml的处理,因为它是一个推送模型。到目前为止,我知道的唯一方法是抛出异常

其他sax库是否支持提前正常退出?

选择正确的实现也很重要:


另外,我仍然认为SAX的操作方式(抛出异常)更简单。

异常确实是规范中可用于退出解析过程的唯一选项。如概述或描述的


如果您真的不想使用异常,请切换到拉式解析器,但我认为这并不重要。

像StAX这样的拉式解析器可以很自然地做到这一点。IME通常也是一种更方便的编程模型。你认为抛出异常会使它比stax慢吗?@Blankman在没有分析的情况下,很难判断哪一种性能更好。但我认为这对于这个简单的案例来说并不重要。但是它会导致性能问题吗?这就是我所关心的。“我要测试它,但理论上例外是缓慢的,对吗?”布兰克曼——“理论上”与什么相比?与执行单个机器指令相比,可能是这样。与解析xml相比,这是值得怀疑的。