我想设计和实现一个基于 xml 的网络协议。我有两台网络机器,每台机器都运行一个 java 应用程序。一个(客户端 C)向另一个(服务器 S)发送一个 XML 表。S 处理一些数据并将另一个 XML 表发送回 C。
现在我想使用 SAX 作为 XML 解析器。要终止parse()
SAX 的例程,必须明确定义流的结尾。在经典的文件读取场景中,这是微不足道的。
起初我试图终止 socked 以指示 EOS,但随后无法再传输任何答案。
在这个stackoverflow question中提出了一个类似的问题。似乎存在多种解决方案:
- 一旦读入请求 XML 的根元素,SAX 就会停止(通过
SAXException
)。依靠异常来终止算法对我来说看起来很糟糕......我认为这是一种糟糕的编程风格,不是吗? - 我计算要传输到服务器的字节数,并在 XML 文件之前发送这个数字。但是我需要事先创建 XML 来计算大小。在我看来也不是最佳实践。
那么你能告诉我如何尽可能简单和优雅地建立这个吗?