我想设计和实现基于xml的网络协议。我有两个网络机器,每个都运行一个Java应用程序。一个(客户端C)将XML表发送给另一个(服务器S)。 S处理一些数据并将另一张XML表发送回C.
现在我想使用SAX作为XML解析器。要终止SAX的parse()
例程,它是必要的,流的末尾是明确定义的。在经典的文件阅读场景中,这是微不足道的。
起初我试图终止袜子以指示EOS,但之后不再传送任何答案。
在此stackoverflow question中,我们会提出类似的问题。似乎存在多种解决方案:
SAXException
)。依靠异常来终止算法对我来说很糟糕......我认为这是糟糕的编程风格,不是吗?那么你能否给我一个暗示如何尽可能简单和优雅地建立它?
答案 0 :(得分:2)
如果您只想在到达文档末尾时停止解析,则可以检测到已在文档的根元素上调用endElement()
。你需要能够识别根元素当然,但这应该很容易,只需保持一个计数器与当前深度。
不可否认,这将无法检测到流中是否有额外信息,但我不认为在大多数情况下会出现问题。
答案 1 :(得分:-1)
使用HTTP实现传输层,它是一个标准,在它的1.1版本中,它支持KeepAlive执行您描述的操作。