2015-06-03 3 views
0

У меня есть метод в моем классе java, который загружает XML-файл и возвращает объект org.w3c.dom.Document.doGet XML в сервлет

Я хотел бы получить этот XML из этого класса сервлета Java, но не могу понять, как это сделать.

Я попытался это:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 


     Document document = Allmethods.getXML(); 

     response.setContentType("text/xml;charset=UTF-8"); 
     response.setHeader("Cache-Control", "no-cache"); 
     response.getWriter().write(document); 

    } 

Но это не работает, потому что PrintWriter не применяется для объекта документа. Как я могу архивировать это?

+0

Вы должны выполнить сериализацию документа до строки, прежде чем вы сможете ее вывести. Прошло некоторое время с тех пор, как я работал с этим, но я считаю, что вам нужно будет запустить «Документ» с помощью преобразования XSL с таблицей стилей по умолчанию (преобразование идентичности). –

+0

, так что вы хотите получить объект DOM из XML-файла? – Babel

ответ

0

Я преуспел в следующем совете от @Jim Garrison.

Document document = Allmethods.getXML(); 

     TransformerFactory tf = TransformerFactory.newInstance(); 
     Transformer transformer = tf.newTransformer(); 
     transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); 

     StringWriter writer = new StringWriter(); 
     transformer.transform(new DOMSource(document), new StreamResult(writer)); 
     String output = writer.getBuffer().toString(); 

     response.setContentType("text/xml;charset=UTF-8"); 
     response.setHeader("Cache-Control", "no-cache"); 
     response.getWriter().write(output);