HttpServletRequest JAXP DOM: чтение данных POST

У меня есть объект HttpServletRequest в моем сервлете, который получает отправленный ему XML-документ. Я хотел бы использовать JAXP (не JAXB, потому что для одного он использует слишком много места на диске для моего конкретного случая использования). Мне нужно разобрать документ в объект DOM в памяти, где он будет обрабатываться. Любая идея о том, как анализировать POST XML из объекта запроса?

Спасибо,

Джон Гоче


person johngoche9999    schedule 20.01.2012    source источник


Ответы (1)


Это зависит от того, как клиент отправил его.

Если он соответствует стандарту HTTP multipart/form-data (например, используется вместе с HTML <input type="file">), используйте Apache Commons FileUpload или Servlet 3.0 HttpServletRequest#getParts(), чтобы извлечь нужную часть из составного запроса. Здесь вы можете найти несколько конкретных примеров: Как загрузить файлы на сервер используя JSP/Servlet? В конечном итоге вы хотели бы получить InputStream.

Если это необработанное тело запроса (т. е. полное тело запроса на самом деле является целым файлом XML, вы часто видите это в доморощенных низкоуровневых приложениях, которые злоупотребляют протоколом HTTP для передачи файлов), то вы можете получить его как InputStream просто HttpServletRequest#getInputStream()< /а>.

Какой бы способ вы ни использовали/выбрали, вам нужно убедиться, что вы каким-то образом получите InputStream, ссылающийся на файл XML. Таким образом, вы можете передать его в JAXP API обычным способом, в котором есть методы, принимающие InputStream.

person BalusC    schedule 21.01.2012