java 生成xml cdata_java注解生成xml和包含CDATA问题
百度java生成xml,有一大推的文章,主要的生成方式一种使用Dom4J ,还有一种使用Jdk自带注解类!
下面主要整理我注解类的使用,(可以参考这篇文章Dom4J生成xml和包含CDATA问题)和xml中CDATA 问题的解决方法!
1:要生成的xml原始文件!
35399645973
保湿>洗护]]>
310
93.8
85
35399645973_1
35399645973_2
35399645973_3
……
1
400x400
400x400
400x400
2:xml对应的model类!
(1):FanLiProductInofMsg.java
import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author aflyun
* @date 2016.06.12
*
*/
@XmlRootElement(name="item")
public class FanLiProductInofMsg {
@XmlAttribute
private String version;
@XmlElement
private String id;
@XmlElement
private String title;
@XmlElement
private String category;
@XmlElement
private String url;//Pc商品的url
@XmlElement(name="url_wap")
private String urlWap;//Wap商品的url url_wap
@XmlElement
private String price;
@XmlElement(name="promotion_price")
private String promotionPrice;//promotion_price
@XmlElement(name="wap_price")
private String wapPrice;//wap_price
@XmlElementWrapper(name="sub_item_ids")
@XmlElement(name="sub_item_id")
private List subItemIds;//sub_item_ids
@XmlElement
private String detail;//detail
@XmlElement
private String status;//status
@XmlElementWrapper(name="pic_main")
@XmlElement(name="img")
private List mainImg;//pic_main
@XmlElementWrapper(name="pic_extra")
@XmlElement(name="img")
private List extraImg;//pic_extra
public void setVersion(String version) {
this.version = version;
}
public void setId(String id) {
this.id = id;
}
public void setTitle(String title) {
this.title = title;
}
public void setCategory(String category) {
this.category = category;
}
public void setUrl(String url) {
this.url = url;
}
public void setUrlWap(String urlWap) {
this.urlWap = urlWap;
}
public void setPrice(String price) {
this.price = price;
}
public void setPromotionPrice(String promotionPrice) {
this.promotionPrice = promotionPrice;
}
public void setWapPrice(String wapPrice) {
this.wapPrice = wapPrice;
}
public void setSubItemIds(List subItemIds) {
this.subItemIds = subItemIds;
}
public void setDetail(String detail) {
this.detail = detail;
}
public void setStatus(String status) {
this.status = status;
}
public void setMainImg(List mainImg) {
this.mainImg = mainImg;
}
public void setExtraImg(List extraImg) {
this.extraImg = extraImg;
}
}
(2):Img .java
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author aflyun
* @date 2016.06.12
*
*/
@XmlRootElement
public class Img {
@XmlElement(name="url")
private String url;
@XmlElement(name="size")
private String size;
public void setUrl(String url) {
this.url = url;
}
public void setSize(String size) {
this.size = size;
}
}
3:生成过程,已经CDATA问题处理!
package com.dufy.test.xml;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.transform.sax.SAXResult;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.junit.Test;
import com.kuyu.b2b2c.product.fanli.vo.FanLiProductInofMsg;
import com.kuyu.b2b2c.product.fanli.vo.Img;
public class JuintXmlTest {
private static Marshaller marshal;
@Test
public void testXml() throws Exception {
List list = new ArrayList();
list.add("11_11_11");
list.add("22_22_22");
list.add("33_33_33");
List imgList = new ArrayList();
Img img = null;
for (int i = 0; i < 2; i++) {
img = new Img();
img.setUrl("-" + i + "-");
img.setSize("40×40");
imgList.add(img);
}
FanLiProductInofMsg fps = new FanLiProductInofMsg();
fps.setVersion("1.0");
fps.setId("110");
fps.setTitle("4K 高清");
fps.setCategory("电视>4K>高清");
fps.setUrl("http://baidu.com");
fps.setUrlWap("http://baidu.wap.com");
fps.setPrice("100");
fps.setPromotionPrice("111");
fps.setWapPrice("113");
fps.setSubItemIds(list);
fps.setDetail("wwwwwwwwwwwwwwwwwwwwwww");
fps.setStatus("1");
fps.setMainImg(imgList);
fps.setExtraImg(imgList);
PrintWriter pw = new PrintWriter(new File("D:/test.xml"));
String ojbectToXmlWithCDATA = ojbectToXmlWithCDATA(FanLiProductInofMsg.class, fps);
System.out.println(ojbectToXmlWithCDATA);
pw.println(ojbectToXmlWithCDATA);
pw.close();
}
public static String ojbectToXmlWithCDATA(Class clazz, Object obj) throws Exception {
JAXBContext context = JAXBContext.newInstance(clazz);
// configure an OutputFormat to handle CDATA
OutputFormat of = new OutputFormat();
of.setCDataElements(
new String[] { "^title", //
"^category",
"^url",
"^url_wap",
"^detail"
}); //
// set any other options you'd like
of.setPreserveSpace(true);
of.setIndenting(true);
// create the serializer
ByteArrayOutputStream op = new ByteArrayOutputStream();
XMLSerializer serializer = new XMLSerializer(op, of);
SAXResult result = new SAXResult(serializer.asContentHandler());
Marshaller mar = context.createMarshaller();
mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
mar.marshal(obj, result);
return op.toString("utf-8");
}
}
setCDataElements 这里面你标注需CDATA 的字段!
上面的这个例子可以直接拷贝运行,网上还一些其他的方法生成xml和CDATA,如果你有好的方法,欢迎分享给我,谢谢!
4:参考文章
(1):Jaxb2 转换XML文档
(2):Jaxb annotation初步使用
(3):三步解决JAXB生成XML包含CDATA问题—JAVA编程
欢迎访问我的csdn博客,我们一同成长!
"不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!"
http://blog.csdn.net/u010648555
java 生成xml cdata_java注解生成xml和包含CDATA问题相关推荐
- mybatis使用注解替代xml配置,动态生成Sql
mybatis使用注解替代xml配置时,遇到判断条件是否为null或者为空时,@Select很难搞定,不知道怎么办? mybatis3中增加了使用注解来配置Mapper的新特性,使用 SelectPr ...
- java xmladapte_三步解决JAXB生成XML包含CDATA问题—JAVA编程
废话不多说,写此文档的目的就是为了帮助java开发者,解决利用JAXB生成XML时,XML中带有CDATA问题. 分三步走: 首先创建适配器类:CDataAdapter.java package co ...
- java只读xml文件头_为了生成只读的接口和xml,并命名结尾为MapperR.java和MapperR.xml...
<一>首先从https://github.com/mybatis/generator下载源代码,然后找到org.mybatis.generator.api下面的IntrospectedTa ...
- java生成xml文件head,生成XML文件 - Glucose的个人空间 - OSCHINA - 中文开源技术交流社区...
参照网上这篇博客所写,在此表示感谢 package com.qiux.demo; import java.io.FileOutputStream; import java.io.IOException ...
- java gradle maven_java – 如何使gradle在maven用户的项目根目录下生成一个有效的pom.xml文件?...
在现在只有两天的时间里,我绝对出售了我所有Java项目的毕业生,并从我所有项目的根目录中删除pom.xml. 然而,我想保持与maven兼容,在某种意义上,我希望一个毕业生的任务能够在用户想要的项目根 ...
- java利用xml生成excel_JAVA环境中基于XML的一种EXCEL报表生成方法
JAVA环境中基于XML的一种EXCEL报表生 成方法 彭海波王哓东 昆明理工大学信息工程与自动化学院, 云南昆明 650051 摘要:本文探讨了JAVA语言环境下的基于XML的一种EXCEL报表实现 ...
- mybatis根据表逆向自动化生成代码(自动生成实体类、mapper文件、mapper.xml文件)
若采用mybatis框架,数据库新建表,手动编写的话,需要编写大量的实体类.mapper文件.mapper.xml文件,都是一些重复且有规律的工作. 我们可以引用插件,然后做配置,自动生成这些文件,提 ...
- php html 转xml,用PHP生成XML文档(转义字符)
用PHP生成XML文档(转义字符) 我正在从PHP脚本生成XML文档,并且需要转义XML特殊字符.我知道应该转义的字符列表: 但是正确的方法是什么? 应该使用反斜杠(\')来转义字符还是正确的方法?有 ...
- 生成Solr增量索引配置xml
主要是解决在Solr 配置增量索引的时候,如果数据库做了分表比如分了128张,那在配置Solr的data-config.xml的时候会很浪费时间,刚开始我也用dom4生成过,但总是感觉格式有问题,特别 ...
最新文章
- 假如我是超级卷王。。。
- 计算机基础——原码、反码、补码转换
- 威纶通触摸屏与仪表通讯_西门子S7-200PLC与威纶通HMI的通信案例
- 小组是什么意思_生猪期货什么时候上市?相关企业如何参与生猪期货
- javaone_JavaOne 2012:调查JVM水晶球
- Spring Cloud Zuul中使用Swagger汇总API接口文档 1
- 第89天:HTML5中 访问历史、全屏和网页存储API
- 《统计学习方法》代码全解析——第十一部分条件随机场
- EditPlus配置Python环境
- java spark 环境_在 IntelliJ IDEA 中配置 Spark(Java API) 运行环境
- 金蝶记账王和易记账哪个好_代理记账比招聘全职会计好在哪-义乌丹诚代理记账...
- 2022年智慧城市大脑及智慧城市驾驶舱大数据资源平台建设总体架构方案
- Pycharm安装jieba库
- 使用Word(Office 365)版本中的简历助手
- 沪牌-上海牌照-拍牌经验分享: 我是如何三次拍中的?
- matplotlib 配色之内置 colormap
- 水产行业智能供应链管理平台解决方案:支撑企业供应链数字化,提升企业管理效益
- shell-9-函数(tc与限速实例)
- 【就是这么简单】系列
- 2021-2027全球与中国医疗物联网服务市场现状及未来发展趋势
热门文章
- 【WPF】UIElement中的Measure和Arrange调用过程
- c语言分治法求众数重数_分治法求众数问题 (配图)
- 关于企业服务的投资逻辑,你不得不听的6点干货
- 计算机视觉图像常用基本算法(阈值化、形态学变化、模糊)
- weblogic12c问题
- cephfs + Ganesha
- day02--java基础编程:变量,数据类型,类型转换,运算规则,Scanner,运算符,分支结构,循环(随机数),方法,重载,可变参数,递归,数组,冒泡排序
- uni动态class
- html 打开word拼写检查,如何取消或开启Word拼写检查和语法(去掉红波浪线)
- 小马哥java_小马哥 Java 微服务实践 - Spring Cloud 系列