java dom4j cdata_Dom4J生成xml和包含CDATA问题

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

1:生成xml的java文件

package com.dufy.test.xml;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.PrintWriter;

import java.io.StringWriter;

import org.dom4j.Document;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.XMLWriter;

/**

* 使用DOM4J生成xml并包括CDATA的处理

* @author aflyun

* @date 2016.06.16

*

*/

public class TestGenerateXml {

/**

* @param args

*/

public static void main(String[] args) {

loadXml();

}

/**

* 生成 document xml

*/

public static void loadXml(){

Document document = DocumentHelper.createDocument();//由DocumentHelper得到一个空的Document

document.setXMLEncoding("utf-8");//设置xml头条的Encoding

//addElement写入根节点 addAttribute节点属性的键和值

Element root = document.addElement("item");//.addAttribute("xmlns", "").addAttribute("版本号", "");

//由根节点 可以得到下二级的节点

Element id = root.addElement("id");

id.addText("35399645973");

//二级节点

Element title = root.addElement("title");

title.addText("");

Element category = root.addElement("category");

category.addText("保湿>洗护]]>");

Element url = root.addElement("url");

url.addText("");

Element url_wap = root.addElement("url_wap");

url_wap.addText("");

Element price = root.addElement("price");

price.addText("310");

Element promotion_price = root.addElement("promotion_price");

promotion_price.addText("111");

Element wap_price = root.addElement("wap_price");

wap_price.addText("80");

Element sub_item_ids = root.addElement("sub_item_ids");

Element sub_item_id = sub_item_ids.addElement("sub_item_id");

sub_item_id.addText("35399645973_1");

sub_item_id.addText("35399645973_2");

sub_item_id.addText("35399645973_3");

Element detail = root.addElement("");

detail.addText("");

Element status = root.addElement("status");

status.addText("1");

Element pic_main = root.addElement("pic_main");

Element img_main = pic_main.addElement("img");

img_main.addElement("url").addText("");

img_main.addElement("size").addText("400x400");

Element pic_extra = root.addElement("pic_extra");

Element img_extra = pic_extra.addElement("img");

img_extra.addElement("url").addText("");

img_extra.addElement("size").addText("400x400");

Element img_extr1 = pic_extra.addElement("img");

img_extr1.addElement("url").addText("");

img_extr1.addElement("size").addText("400x400");

String xml1 = document.asXML(); //默认转义

String xml2 = formatXml(document, "utf-8", true); //转义

String xml3 = formatXml(document, "utf-8", false); //不转义

System.out.println("--------1111-----------------");

System.out.println(xml1);

System.out.println("---------2222----------------");

System.out.println(xml2);

System.out.println("---------3333----------------");

System.out.println(xml3);

PrintWriter pw = null;

try {

pw = new PrintWriter(new File("D:/test.xml"));

pw.write(xml3);

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

pw.close();

}

}

/**

* 格式化XML文档

*

* @param document xml文档

* @param charset 字符串的编码

* @param istrans 是否对属性和元素值进行转移

* @return 格式化后XML字符串

*/

public static String formatXml(Document document, String charset, boolean istrans) {

OutputFormat format = OutputFormat.createPrettyPrint();

format.setEncoding(charset);

StringWriter sw = new StringWriter();

XMLWriter xw = new XMLWriter(sw, format);

xw.setEscapeText(istrans);

try {

xw.write(document);

xw.flush();

xw.close();

} catch (IOException e) {

System.out.println("格式化XML文档发生异常,请检查!");

e.printStackTrace();

}

return sw.toString();

}

}

setEscapeText 设置为false,最为重要

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

文件:在D:/test.xml

35399645973

保湿>洗护]]>

310

111

80

35399645973_135399645973_235399645973_3

<>>

1

400x400

400x400

400x400

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

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

http://blog.csdn.net/u010648555

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值