我创建了一个AbstractView
以输出一些XML浏览器,如下所示:
public abstract class AbstractXmlView extends AbstractView {
public AbstractXmlView() {
setContentType("application/xml");
}
@Override
protected void renderMergedOutputModel(Map<String, Object> model,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
response.setCharacterEncoding("UTF-8");
Document document = new DOMDocument();
document.setXMLEncoding("UTF-8");
buildXmlDocument(model, document, request, response);
response.getOutputStream().print(document.asXML());
}
public abstract void buildXmlDocument(Map<String, Object> model,
Document document, HttpServletRequest request,
HttpServletResponse response) throws Exception;
正如你所看到的,我的子类将定义buildXMLDocument
以填充将被实际交付给浏览器的XML文档的方法,所以这里有一个简单的实现:
public class GetXmlContacts extends AbstractXmlView {
@Override
public void buildXmlDocument(Map<String, Object> model, Document document,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Element node = document.addElement("node");
node.setText ("I'm unicode áéíóú");
}
请注意,文字字符串作为元素文本node
“我的unicode AEIOU”。 当我要求这个服务器,我获得与UTF-8编码的HTTP响应(OK),XML定义说,这是UTF-8,但该节点的文本将被编码为ISO-8859-1(这是我的猜测,因为当我更改编码与Firefox该字符串看起来OK)。
那么,为什么dom4j的enconding时,它的定义应该是UTF-8文字字符串作为ISO? 是不是有什么错我的代码? 谢谢