Как получить XML из POST-запроса и изменить его в Servlet Filter?

В настоящее время я работаю над требованием, в котором мне нужно получить XML (из запроса POST) в фильтре сервлетов, прежде чем запрос достигнет контроллера Spring, а затем мне нужно обработать XML (отрезать некоторые пустые узлы / элементы) в фильтр, а затем вызов должен продолжаться.

Я попробовал приведенный ниже код (прикреплен только фрагмент), и мне удалось получить тело запроса (XML) и установить измененный ответ.

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletResponse httpResponse = (HttpServletResponse) response;
    if (httpRequest.getMethod().equalsIgnoreCase("POST")) {
      extractDataFromRequest(httpRequest);
      httpResponse.getWriter().write("<root><root>");
    }
    chain.doFilter(request, wrappedResponse);

   public static String extractDataFromRequest(HttpServletRequest request) throws IOException {

    String line;
    StringBuilder builder = new StringBuilder();
    BufferedReader reader = request.getReader();
    while ((line = reader.readLine()) != null) {
      builder.append(line);
    }
    return builder.toString();
  }

Однако весна провалилась со следующим исключением.

Severe: java.lang.IllegalStateException: PWC3997: getReader() has already been called for this request
    at org.apache.catalina.connector.Request.getInputStream(Request.java:1178)
    at org.apache.catalina.connector.RequestFacade.getInputStream(RequestFacade.java:407)
    at org.springframework.http.server.ServletServerHttpRequest.getBody(ServletServerHttpRequest.java:165)
    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:120)
    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:100)

Я ищу конкретную реализацию этого требования от экспертов.