使用 PrintWriter 在 Java Servlet 上输出 XML

Outputting XML on Java Servlet using PrintWriter

我已经使用 this tutorial 将 ArrayList 转换为 XML。我的代码成功地将 XML 输出到 Eclipse 控制台。

这是我的代码片段

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 控制台,而是想在 servlet 上打印出 XML。

我使用以下代码对 jsonObject 做了类似的事情:

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

但我似乎不知道如何使用这种方法来输出我的 XML。

请有人指出我正确的方向。谢谢

您将使用 response.getOutputStream() 将 XML 写入 Servlet 输出。

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

最好用一个Writerresponse.getWriter()可以用在StreamResult上:

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

此外,您需要将 Content-Type header 设置为 text/html; charset=UTF-8(前提是您的编码确实是 UTF-8)。

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

希望对您有所帮助。

您应该设置内容类型:

response.setContentType("text/xml; charset=UTF-8"); //you can set the encode you want to charset
PrintWriter out = response.getWriter();
out.print(yourXmlString);