gpt4 book ai didi

java - 关闭 SAX 解析器在解析过程中正在读取的流的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 00:55:37 26 4
gpt4 key购买 nike

让我们直接回答我的问题:我有一个套接字,并且通过此套接字/流传入的所有输入都由我的 SAX 解析器进行解析。现在,在发生某个解析事件时,我想从 SAX 事件处理程序中关闭套接字/流。另外,我想在解析器仍在工作的情况下从外部关闭流。不幸的是,如果解析器抛出异常(意外的文档结束...),我就无法做一件事或另一件事。好的,我可以捕获这个异常,但是你知道如何安全关闭流的解决方案吗?

最佳答案

我认为你不能轻易做到这一点。您为 SAX 解析器提供了一个要读取的资源(流),然后关闭它,而 SAX 解析器仍然期望从中读取 - 因此它(并非没有道理!)抛出“意外的文档结束”。

如果你想干净地做到这一点,我认为你的 SAX 解析器 handler一旦您决定忽略进一步的事件,您已经实现的应该默默地吞噬事件。

例如您的 startElement()endElement() 等的实现应该在处理之前执行检查以查看您是否仍然对这些事件感兴趣。

这样,SAX 解析器就可以干净地运行到文档末尾,而无需您处理更多事件。

或者,为什么不记录您已关闭输入流的事实,然后当您收到“意外文档结束”事件时,看看它是否确实是预期的。并且仅在确实意外的情况下才记录错误。

关于java - 关闭 SAX 解析器在解析过程中正在读取的流的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com