java - 通过网络解析大型 XML 文件

标签 java xml servlets network-programming

我在网站上进行了一些快速搜索,但似乎无法找到我正在寻找的答案,所以说,通过网络传递大型 xml 文件的一些最佳实践是什么。我对此事的想法是在可管理的段中通过网络流式传输 block ,但是我正在为此寻找其他方法和最佳实践。我知道大是一个相对术语,所以我会让你选择一个任意值来考虑大。

如果有任何混淆,问题是“跨网络发送大型 xml 文件的一些最佳实践是什么?”

编辑:

我看到很多关于压缩的讨论,是否可以使用任何特定的压缩算法以及解压缩所述文件?当我知道那里有经过验证的算法时,我不太想自己动手。我也很感谢到目前为止的回复。

最佳答案

十多年来,压缩和减小 XML 大小一直是一个问题,尤其是在带宽和客户端计算能力都是稀缺资源的移动通信领域。无线通信中使用的最终解决方案是 WBXML,如果我对客户端和服务器端都有足够的控制权,我更喜欢使用它。 (WAP Binary XML Spec)。

此规范定义了如何将 XML 转换为二进制格式,这种格式不仅紧凑,而且易于解析。这与通用压缩方法(例如 gzip)形成对比,后者需要接收方的高计算能力和内存来解压缩然后解析 XML 内容。该规范的唯一缺点是应用程序 token 表应该存在于两侧,这是一个静态定义的代码表,用于保存特定于应用程序的 XML 内容中所有可能的标签和属性的二进制值。如今,这种格式广泛用于移动通信中,用于在大多数应用程序中传输配置和数据,例如 OTA 配置和联系人/便笺/日历/电子邮件同步。

要使用这种格式传输大型 XML 内容,您可以使用类似于 SyncML 协议(protocol)中提出的分块机制。可以找设计文档here ,在“2.6. 大对象处理”一节中描述了这种机制。作为一个简短的介绍:

This feature provides a means to synchronize an object whose size exceeds that which can be transmitted within one message (e.g. the maximum message size – declared in MaxMsgSize element – that the target device can receive). This is achieved by splitting the object into chunks that will each fit within one message and by sending them contiguously. The first chunk of data is sent with the overall size of the object and a MoreData tag signaling that more chunks will be sent. Every subsequent chunk is sent with a MoreData tag, except from the last one.

关于java - 通过网络解析大型 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2136082/

相关文章:

java - 解析生命周期处理指令时出错

authentication - 从 servlet-filter 重定向 Web 客户端(通过 AJAX 进行客户端-服务器连接)

java - 传递 servlet 值列表

java - 无法获取 servlet 设置的 jSTL requestScope 变量

android - 当一个或多个可见性设置为 GONE 时,在 RelativeLayout 中垂直居中 TextView

xml - 将每个单词的第一个字符转换为大写

java - 如何使 runOnUiThread 同步

java - 如何在带有请求正文的请求上使用getPage()?

java - 从两个数组列表中删除公共(public)值

java - 使用 SpreadSheet API 时无法完成 HTTP 请求