dom4j 改变XML声明和编码格式 您所在的位置:网站首页 HTML文件编码格式改变 dom4j 改变XML声明和编码格式

dom4j 改变XML声明和编码格式

2024-07-09 22:52| 来源: 网络整理| 查看: 265

dom4j 改变XML编码 Element rootElement = document.addElement("data"); document.setXMLEncoding("GBK"); //默认utf-8 ...

使用document.setXMLEncoding这样设置而生成的xml文件仍然是utf-8编码。

需要使用OutputFormat设置输出文件编码格式。

public static void writeXMLFile(Document document,File file,String Encoding){ try { OutputFormat format = OutputFormat.createPrettyPrint();//美化输出 不想美化可以使用new OutputFormat(); format.setEncoding(Encoding.toUpperCase()); OutputStream out = new FileOutputStream(file); XMLWriter writer = new XMLWriter(out,format); writer.write(document); writer.close(); }catch (IOException e) { e.printStackTrace(); }

使用OutputFormat,可以设置xml输出文件编码,并且xml文件声明处也会跟着改变。

引用别人答案:解释document.setXMLEncoding和format.setEncoding设置编码的区别

public class TestXML{ @Test public void test() throws IOException{ Document doc = new DefaultDocument(); doc.addElement("root"); // 这里打印出来是默认的utf-8 System.out.println(doc.asXML()); doc.setXMLEncoding("utf-16"); // 这里打印出来是修改后的utf-16 System.out.println(doc.asXML()); // 这里没有设置编码格式默认保存的是utf-8,看一下dom4j的源码就知道了 saveXML(doc, "D:\\temp\\test\\test1.xml", null); // 这里设置了所以保存以后编码格式是big5 saveXML(doc, "D:\\temp\\test\\test2.xml", "big5"); } private void saveXML(Document doc, String filePath, String encode) throws IOException{ OutputFormat format = new OutputFormat(); if (null != encode){ format.setEncoding(encode.toUpperCase()); } XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(filePath),format); xmlWriter.write(doc); xmlWriter.flush(); xmlWriter.close(); } }

上面代码出自此处。

最后要说一下:

XMLWriter可以传入OutputStream或者Writer XMLWriter writer = new XMLWriter(OutputStream, OutputFormat); XMLWriter writer = new XMLWriter(Writer, OutputFormat); 最初试着传入了new FileWriter(file),如下 try { XMLWriter writer = new XMLWriter(new FileWriter(f), format); writer.write(document); writer.close(); result = fileName; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 但是得到的结果并不对。修改为如下后,结果正确。 try { OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(f), format); xmlWriter.write(document); xmlWriter.flush(); xmlWriter.close(); result = fileName; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); LOG.error("trans for XML error:", e); }

记录。

相关链接: http://www.iteye.com/problems/64178 http://bbs.csdn.net/topics/370057777 http://liuchunqing2001.blog.163.com/blog/static/3082291201382911214196/ http://lavasoft.blog.51cto.com/62575/235272 http://www.educity.cn/wenda/105197.html http://www.blogjava.net/i369/articles/154264.html http://bbs.csdn.net/topics/290027113 http://developer.51cto.com/art/200903/117512.htm http://pridesnow.iteye.com/blog/561958 http://blog.csdn.net/chenghui0317/article/details/11486271 Java创建xml文档笔记(DOM,DOM4J) http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/17/3082949.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有