使用 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());
最好用一个Writer
,response.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);
我已经使用 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());
最好用一个Writer
,response.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);