2015-01-16 2 views
0

Я использовал this tutorial для преобразования ArrayList в XML. Мой код успешно выводит XML на консоль Eclipse.Вывод XML на Java Servlet с использованием PrintWriter

Вот отрывок из моего кода

DocumentBuilderFactory dFact = DocumentBuilderFactory.newInstance(); 
DocumentBuilder build = dFact.newDocumentBuilder(); 
Document doc = build.newDocument(); 

Element root = doc.createElement("Properties"); 
doc.appendChild(root); 

for(House house : house) { 

    Element Details = doc.createElement("house"); 
    root.appendChild(Details); 

    Element location = doc.createElement("location"); 
    location.appendChild(doc.createTextNode(house.getLocation())); 
    Details.appendChild(location); 

    ... 

} 

// Save the document to the disk file 
TransformerFactory tranFactory = TransformerFactory.newInstance(); 
Transformer aTransformer = tranFactory.newTransformer(); 

// format the XML nicely 
aTransformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1"); 

aTransformer.setOutputProperty(
     "{http://xml.apache.org/xslt}indent-amount", "4"); 
aTransformer.setOutputProperty(OutputKeys.INDENT, "yes"); 

DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(System.out); 
aTransformer.transform(source, result); 

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

я сделал что-то подобное с JSONObject, используя следующий код:

PrintWriter out = resp.getWriter(); 
... 
out.print(jsonObject); 
out.close(); 

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

Пожалуйста, может кто-нибудь указать мне в правильном направлении. Спасибо

ответ

1

Вы должны использовать response.getOutputStream() для записи вывода XML в Servlet.

StreamResult result = new StreamResult(response.getOutputStream()); 

Предпочтительно, вы можете использовать Writer, то response.getWriter() может быть использован на StreamResult:

StreamResult result = new StreamResult(response.getWriter()); 

Кроме того, вам нужно будет установить заголовок Content-Type к text/html; charset=UTF-8 (и при условии, ваша кодировка действительно UTF-8).

response.setContentType("text/xml; charset=UTF-8"); 

Надеюсь, это поможет.

1

Вы должны установить тип содержимого:

response.setContentType("text/xml; charset=UTF-8"); //you can set the encode you want to charset 
PrintWriter out = response.getWriter(); 
out.print(yourXmlString); 
Смежные вопросы