web应用导出xml文件

public class XmlExportServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

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

  Writer out = response.getWriter();

//在http的header的信息里告诉浏览器用弹出的方式打开或者保存xml文件,

所以,文件名是按照header的解析方式来编码和解码的,

而  response.setCharacterEncoding("UTF-8");只是设置content的的字符集 。

http的header信息里默认传参使用iso-8859-1

  String filename = URLEncoder.encode("干部信息","UTF-8");  //浏览器默认的URLDecoder为utf-8


  response.setHeader("Content-Disposition", "attachment;filename="+filename+".xml");
  //create document
  Document doc = XmlFileUtil.createDocument(out);
 
  XmlFileUtil.writeXMl(doc);
 
  }

}


package oawork.util;


import java.io.IOException;
import java.io.Writer;


import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;


/**
 * 
 * 对XML文档操作的工具类
 */
public class XmlFileUtil {


private static XMLWriter writer;

/**
*  创建Document
* @return
*/
public static Document createDocument(Writer out)
{
OutputFormat format=OutputFormat.createCompactFormat();
format.setEncoding("UTF-8");
//去掉xml头  
// format.setSuppressDeclaration(true);
// format.isPadText();
writer = new XMLWriter(out,format);
Document doc = DocumentHelper.createDocument();

return doc;
}

public static void writeXMl(Document doc)
{
try 
{
writer.write(doc);
writer.close();

catch (IOException e) 
{
e.printStackTrace();
}
}



}



header默认是按iso-8859-1解析,唯一filename是按utf-8解析的,所以上面的filename要按utf-8单独编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值