Java不生成 xml注解_java注解生成xml和包含CDATA
昆明达内培训的小编这一期给大家讲java注解生成xml和包含CDATA问题。
百度java生成xml,有一大推的文章,主要的生成方式一种使用Dom4J ,还有一种使用Jdk自带注解类!
下面主要整理我注解类的使用,(可以参考这篇文章Dom4J生成xml和包含CDATA问题)和xml中CDATA问题的解决方法!
1:要生成的xml原始文件!
version="1.0" encoding="utf-8"?>
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的字段!
Java不生成 xml注解_java注解生成xml和包含CDATA相关推荐
- java 自定义注解_Java注解
前言 近日在阅读开源项目,发现项目里好多奇奇怪怪的注解(@DataScope.@Log...)看得我一脸懵,不知道大家是否也有过这样的经历,回想了一下,发现自己对于注解的知识,好像只停留在@Overr ...
- java interface作用是什么_Java注解总结:史上最全,有这一篇就够了
什么是注解? 注解的定义 官网描述如下: Java 注解用于为 Java 代码提供元数据.作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的.Java 注解是从 Jav ...
- java threadsafe 注解_Java 注解详解
什么是注解 Annotation 中文译过来就是注解.标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解.而新手很难理解的主要原因是一些技术文档里的专业术语和名词不太 ...
- java 多重注解_Java注解-元数据、注解分类、内置注解和自定义注解
大家好,我是乐字节的小乐,上次说过了Java多态的6大特性|乐字节,接下来我们来看看Java编程里的注解. Java注解有以下几个知识点:元数据 注解的分类 内置注解 自定义注解 注解处理器 Serv ...
- java method 注解_JAVA 注解详解及简单实例
JAVA 注解详解及简单实例 何为注解 注解(Annotation)又称为元数据,在JDK1.5后引入,它的作用是: 生成文档 这是注解的原始用途,可以通过注解生成JavaDoc文档 跟踪代码的依赖 ...
- java编译时注解_Java注解处理器--编译时处理的注解
1. 一些基本概念 在开始之前,我们需要声明一件重要的事情是:我们不是在讨论在运行时通过反射机制运行处理的注解,而是在讨论在编译时处理的注解. 注解处理器是 javac 自带的一个工具,用来在编译时期 ...
- java 废弃注解_Java 注解
什么是注解呢?还记得Class是什么吗?注解就是Class对象中的⼀⼩段信息/⽂本/标记,它可以携带参数,可以在运⾏时被阅读.这就是注解的全部了.怎么处理注解并不是注解要关注的信息,它只是这么一小段信 ...
- java注解_Java注解教程及自定义注解
Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...
- java 生成token代码_java token生成和校验的实例代码
现在越来越多的登录方式都用到了token作为用户登录令牌,所以实现了一个token生成和校验案例. 缺点:该实现方式token是存储在内存中,不适合分布式项目,如需改为分布式项目部署,可把token存 ...
- java 获取注解_java 注解annotation的使用,以及反射如何获取注解
1.元注解 元注解是指注解的注解.包括 @Retention @Target @Document @Inherited四种. 1. Annotation型定义为@interface, 所有的Anno ...
最新文章
- 当对象或对象属性为空时,如何安全给对象或对象属性添加默认值
- iPhone 6c配置和5s相近 4寸屏基本确定
- 新手探索NLP(八)——序列标注
- python 读图片性能测试
- 【译】JS基础算法脚本:类数组(arguments)去重
- CodeForces 570B,C
- shell:判断一个进程是否存在
- VSD Viewer for Mac(Visio绘图文件阅读器)
- php洗车分销系统_全国首个PHP宝塔IDC分销系统
- python定时器启动多次_python 定时器
- 动词变名词的变化规则_英语单词词性转换规则大全
- 移动网页支付(微信H5支付和支付宝网页支付)
- 小Biu的礼物——UPC
- LC6936-TWS耳机方案
- 【K210学习笔记】#MaixPy#(3)人脸检测与人脸识别
- 投资理财-老大爷的故事
- 阿迪、耐克过去式,李宁、安踏、特步现在时
- 使用SPSS做时间序列预测时,如何自定义日期型数据周期(时间数据周期)?
- 解决使用Python连接Mysql数据库时出现错误:Access denied for user 'xxx'@'xxx' (using password: NO)
- 程序猿之歌:一人我编程累