java注解生成xml和包含CDATA问题里面做了介绍,这里直接贴代码。

1:生成xml的java文件

  1. package com.dufy.test.xml;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.io.PrintWriter;
  6. import java.io.StringWriter;
  7. import org.dom4j.Document;
  8. import org.dom4j.DocumentHelper;
  9. import org.dom4j.Element;
  10. import org.dom4j.io.OutputFormat;
  11. import org.dom4j.io.XMLWriter;
  12. /**
  13. * 使用DOM4J生成xml并包括CDATA的处理
  14. * @author aflyun
  15. * @date 2016.06.16
  16. *
  17. */
  18. public class TestGenerateXml {
  19. /**
  20. * @param args
  21. */
  22. public static void main(String[] args) {
  23. loadXml();
  24. }
  25. /**
  26. * 生成 document xml
  27. */
  28. public static void loadXml(){
  29. Document document = DocumentHelper.createDocument();//由DocumentHelper得到一个空的Document
  30. document.setXMLEncoding("utf-8");//设置xml头条的Encoding
  31. //addElement写入根节点 addAttribute节点属性的键和值
  32. Element root = document.addElement("item");//.addAttribute("xmlns", "").addAttribute("版本号", "");
  33. //由根节点 可以得到下二级的节点
  34. Element id = root.addElement("id");
  35. id.addText("35399645973");
  36. //二级节点
  37. Element title = root.addElement("title");
  38. title.addText("<![CDATA[补水首选水密码水保湿美白护洗护组合三件]]>");
  39. Element category = root.addElement("category");
  40. category.addText("<![CDATA[美妆>保湿>洗护]]>");
  41. Element url = root.addElement("url");
  42. url.addText("<![CDATA[http://www.example.com/detail-35399645973]]>");
  43. Element url_wap = root.addElement("url_wap");
  44. url_wap.addText("<![CDATA[http://www.example.com/detail-35399645973]]>");
  45. Element price = root.addElement("price");
  46. price.addText("310");
  47. Element promotion_price = root.addElement("promotion_price");
  48. promotion_price.addText("111");
  49. Element wap_price = root.addElement("wap_price");
  50. wap_price.addText("80");
  51. Element sub_item_ids = root.addElement("sub_item_ids");
  52. Element sub_item_id = sub_item_ids.addElement("sub_item_id");
  53. sub_item_id.addText("35399645973_1");
  54. sub_item_id.addText("35399645973_2");
  55. sub_item_id.addText("35399645973_3");
  56. Element detail = root.addElement("<detail>");
  57. detail.addText("<![CDATA[商品详情,支持html图文混排]]>");
  58. Element status = root.addElement("status");
  59. status.addText("1");
  60. Element pic_main = root.addElement("pic_main");
  61. Element img_main = pic_main.addElement("img");
  62. img_main.addElement("url").addText("<![CDATA[http://www.example.com/10777829/T_400x400.jpg]]>");
  63. img_main.addElement("size").addText("400x400");
  64. Element pic_extra = root.addElement("pic_extra");
  65. Element img_extra = pic_extra.addElement("img");
  66. img_extra.addElement("url").addText("<![CDATA[http://www.example.com/10777829/T_400x400.jpg]]>");
  67. img_extra.addElement("size").addText("400x400");
  68. Element img_extr1 = pic_extra.addElement("img");
  69. img_extr1.addElement("url").addText("<![CDATA[http://www.example.com/10777829/T_400x400.jpg]]>");
  70. img_extr1.addElement("size").addText("400x400");
  71. String xml1 = document.asXML(); //默认转义
  72. String xml2 = formatXml(document, "utf-8", true); //转义
  73. String xml3 = formatXml(document, "utf-8", false); //不转义
  74. System.out.println("--------1111-----------------");
  75. System.out.println(xml1);
  76. System.out.println("---------2222----------------");
  77. System.out.println(xml2);
  78. System.out.println("---------3333----------------");
  79. System.out.println(xml3);
  80. PrintWriter pw = null;
  81. try {
  82. pw = new PrintWriter(new File("D:/test.xml"));
  83. pw.write(xml3);
  84. } catch (FileNotFoundException e) {
  85. // TODO Auto-generated catch block
  86. e.printStackTrace();
  87. }finally{
  88. pw.close();
  89. }
  90. }
  91. /**
  92. * 格式化XML文档
  93. *
  94. * @param document xml文档
  95. * @param charset 字符串的编码
  96. * @param istrans 是否对属性和元素值进行转移
  97. * @return 格式化后XML字符串
  98. */
  99. public static String formatXml(Document document, String charset, boolean istrans) {
  100. OutputFormat format = OutputFormat.createPrettyPrint();
  101. format.setEncoding(charset);
  102. StringWriter sw = new StringWriter();
  103. XMLWriter xw = new XMLWriter(sw, format);
  104. xw.setEscapeText(istrans);
  105. try {
  106. xw.write(document);
  107. xw.flush();
  108. xw.close();
  109. } catch (IOException e) {
  110. System.out.println("格式化XML文档发生异常,请检查!");
  111. e.printStackTrace();
  112. }
  113. return sw.toString();
  114. }
  115. }

setEscapeText 设置为false,最为重要

2:生成后的xml,上面的第三种才能生成正确的结果!

文件:在D:/test.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <item>
  3. <id>35399645973</id>
  4. <title><![CDATA[补水首选水密码水保湿美白护洗护组合三件]]></title>
  5. <category><![CDATA[美妆>保湿>洗护]]></category>
  6. <url><![CDATA[http://www.example.com/detail-35399645973]]></url>
  7. <url_wap><![CDATA[http://www.example.com/detail-35399645973]]></url_wap>
  8. <price>310</price>
  9. <promotion_price>111</promotion_price>
  10. <wap_price>80</wap_price>
  11. <sub_item_ids>
  12. <sub_item_id>35399645973_135399645973_235399645973_3</sub_item_id>
  13. </sub_item_ids>
  14. <<detail>><![CDATA[商品详情,支持html图文混排]]></<detail>>
  15. <status>1</status>
  16. <pic_main>
  17. <img>
  18. <url><![CDATA[http://www.example.com/10777829/T_400x400.jpg]]></url>
  19. <size>400x400</size>
  20. </img>
  21. </pic_main>
  22. <pic_extra>
  23. <img>
  24. <url><![CDATA[http://www.example.com/10777829/T_400x400.jpg]]></url>
  25. <size>400x400</size>
  26. </img>
  27. <img>
  28. <url><![CDATA[http://www.example.com/10777829/T_400x400.jpg]]></url>
  29. <size>400x400</size>
  30. </img>
  31. </pic_extra>
  32. </item>

3:参考文章

(1):Dom4j格式化转义字符问题


欢迎访问我的csdn博客,我们一同成长!

"不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!"

http://blog.csdn.net/u010648555

Dom4J生成xml和包含CDATA问题的更多相关文章

  1. java注解生成xml和包含CDATA问题

    百度java生成xml,有一大推的文章,主要的生成方式一种使用Dom4J ,还有一种使用Jdk自带注解类! 下面主要整理我注解类的使用,(可以参考这篇文章Dom4J生成xml和包含CDATA问题)和x ...

  2. 使用DOM4J生成XML文档

    package xml; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; imp ...

  3. dom4j——使用dom4j生成xml

    使用org.dom4j.Element 创建xml /** * 生成Service.xml文件 * @param tran 交易对象 * @param filePath 文件夹路径 */ public ...

  4. 使用Dom4j生成xml文件

    场景:使用dom4j生成以下xml文件 <?xml version="1.0" encoding="UTF-8"?> <result> ...

  5. dom4j生成xml

    package com.yunfengtech.solution.business; import java.io.FileOutputStream; import org.dom4j.Documen ...

  6. Dom4j 生成xml并格式化

    Document document = DocumentHelper.createDocument(); //创建root         Element root = document.addEle ...

  7. 使用dom4j生成xml字符串,以及解析xml字符串

    基于dom4j-1.6.1.jar import java.io.IOException; import java.io.StringWriter; import java.util.ArrayLis ...

  8. Java利用dom4j生成xml文件、解析XML

    package com.fq.fanqi; import java.io.File;import java.io.FileWriter;import java.io.IOException;impor ...

  9. 使用Dom4j生成xml文件(utf-8编码)

    xml文件内容: <?xml version="1.0" encoding="UTF-8"?> <result> <code> ...

随机推荐

  1. Nginx学习之HTTP/2.0配置

    哎呀,一不小心自己的博客也是HTTP/2.0了,前段时间对网站进行了https迁移并上了CDN,最终的结果是这酱紫的(重点小绿锁,安全标示以及HTTP/2.0请求). 科普 随着互联网的快速发展,HT ...

  2. Ext.grid.EditorGridPanel保存

    用get方法传递编辑的数据会出现乱码,解决get乱码的方法就是encodeURI(param),然后在后台转码: String strJson =  new String(request.getPar ...

  3. vue项目引入bootstrap、jquery

    在进行vue的学习,项目中需要引入bootstrap.jquery的步骤. 一.引入jQuery 在当前项目的目录下(就是package.json),运行命令 cnpm install jquery ...

  4. Spring定时任务quartz表达式

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp32 0 0 12 * * ?---------------在每天中午12: ...

  5. 学习笔记GAN004:DCGAN main.py

    Scipy 高端科学计算:http://blog.chinaunix.net/uid-21633169-id-4437868.html import os #引用操作系统函数文件 import sci ...

  6. NHibernate教程(12)--延迟加载

    本节内容 引入 延迟加载 实例分析 1.一对多关系实例 2.多对多关系实例 结语 引入 通过前面文章的分析,我们知道了如何使用NHibernate,比如CRUD操作.事务.一对多.多对多映射等问题,这 ...

  7. sublime编辑器代码背景刺眼怎么修改?

    有些人觉得如上图大括号刺眼,怎么把它改得不那么刺眼呢? [第一步]打开Bracket Hightlighter插件的用户配置文件: 然后按ctrl+G跳转到第330行, 如图位置改为"sty ...

  8. IT之光

    作为一个IT界的新新人才,现在拥有第一个博客,可以在这里学习和分享IT方面的知识和技术.

  9. 201521123055 《Java程序设计》第8周学习总结

    1. 本章学习总结 2. 书面作业 Q1.List中指定元素的删除(题目4-1) public static List<String> convertStringToList(String ...

  10. 201521123005 《java程序设计》 第七周学习总结

    1. 本周学习总结 参考资料: XMind 2. 书面作业 Q1ArrayList代码分析 1.1 解释ArrayList的contains源代码 ArrayList的contains源代码 /** ...