【发布时间】:2012-01-20 18:53:12
【问题描述】:
我的 servlet 中有一个 HttpServletRequest 对象 获取发布到它的 XML 文档。我想用 JAXP(不是 JAXB,因为它使用了太多的磁盘空间 对于我的特定用例)。我需要解析文档 到内存中的一个 DOM 对象中,它将被处理。 知道如何从请求对象解析 POST XML 吗?
谢谢,
约翰·戈奇
【问题讨论】:
我的 servlet 中有一个 HttpServletRequest 对象 获取发布到它的 XML 文档。我想用 JAXP(不是 JAXB,因为它使用了太多的磁盘空间 对于我的特定用例)。我需要解析文档 到内存中的一个 DOM 对象中,它将被处理。 知道如何从请求对象解析 POST XML 吗?
谢谢,
约翰·戈奇
【问题讨论】:
这取决于客户端如何发送它。
如果它符合 HTTP multipart/form-data 标准(就像与 HTML <input type="file"> 一起使用的那样),则使用 Apache Commons FileUpload 或 Servlet 3.0 HttpServletRequest#getParts() 从多部分请求中提取所需部分。你可以在这里找到一些具体的例子:How to upload files to server using JSP/Servlet?你最终希望得到一个InputStream。
如果它是原始请求正文(即 整个 请求正文实际上是整个 XML 文件,您经常会在滥用 HTTP 协议传输文件的本土低级应用程序中看到这种情况),然后您可以通过 HttpServletRequest#getInputStream() 获得 InputStream。
无论您使用/选择何种方式,您都需要确保以某种方式最终以 InputStream 引用 XML 文件。通过这种方式,您可以以通常的方式将其提供给 JAXP API,其中的方法采用 InputStream。
【讨论】: