繁体   English   中英

使用PrintWriter在Java Servlet上输出XML

[英]Outputting XML on Java Servlet using PrintWriter

我已使用本教程将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.setContentType("text/xml; charset=UTF-8"); //you can set the encode you want to charset
PrintWriter out = response.getWriter();
out.print(yourXmlString);

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

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

优选地,您可以使用Writer ,可以在StreamResult上使用response.getWriter()

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

另外,您需要将Content-Type标头设置为text/html; charset=UTF-8 text/html; charset=UTF-8 (并且提供的编码确实是UTF-8 )。

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

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM