Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >java注解生成xml和包含CDATA问题

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

作者头像
全栈程序员站长
发布于 2022-07-19 07:00:10
发布于 2022-07-19 07:00:10
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是全栈君。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?> 
<item> 
  <id>35399645973</id>   
  <title><![CDATA[补水首选水密码水保湿美白护洗护组合三件]]> </title>  
 <category><![CDATA[美妆>保湿>洗护]]></category>
  <url><![CDATA[http://www.example.com/detail-35399645973]]> </url> 
  <url_wap><![CDATA[http://m.example.com/de99645973]]> </url_wap>   
  <price>310</price>   
  <promotion_price>93.8</promotion_price> 
<wap_price>85</wap_price> 
<sub_item_ids>
        <sub_item_id>35399645973_1</sub_item_id>
        <sub_item_id>35399645973_2</sub_item_id>
        <sub_item_id>35399645973_3</sub_item_id>
        ……
</sub_item_ids>
  <detail><![CDATA[商品详情,支持html图文混排]]> </detail> 
  <status>1<status>
    <pic_main> 
    <img>  
      <url><![CDATA[http://www.example.com/10777829/T_400x400.jpg]]> </url> 
      <size>400x400</size> 
    </img> 
  </pic_main> 
  <pic_extra> 
    <img> 
      <url><![CDATA[http://www.example.com/10777821_400x400.jpg]]> </url> 
      <size>400x400</size>  
    </img>   
    <img> 
      <url><![CDATA[http://www.example.com/10777822_400x400.jpg]]> </url> 
      <size>400x400</size>  
    </img>   
  </pic_extra >   
</item> 

2:xml对应的model类! (1):FanLiProductInofMsg.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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<String> subItemIds;//sub_item_ids

    @XmlElement
    private String detail;//detail

    @XmlElement
    private String status;//status


    @XmlElementWrapper(name="pic_main")
    @XmlElement(name="img")
    private List<Img> mainImg;//pic_main

    @XmlElementWrapper(name="pic_extra")
    @XmlElement(name="img")
    private List<Img> 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<String> subItemIds) {
        this.subItemIds = subItemIds;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public void setMainImg(List<Img> mainImg) {
        this.mainImg = mainImg;
    }

    public void setExtraImg(List<Img> extraImg) {
        this.extraImg = extraImg;
    }

}

(2):Img .java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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问题处理!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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<String> list = new ArrayList<String>();
        list.add("11_11_11");
        list.add("22_22_22");
        list.add("33_33_33");
        List<Img> imgList = new ArrayList<Img>();
        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编程

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/121233.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年2月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Dom4J生成xml和包含CDATA问题
在 java注解生成xml和包含CDATA问题里面做了介绍,这里直接贴代码。 1:生成xml的java文件
全栈程序员站长
2022/07/19
6510
JAXB应用实例
过往的项目中数据存储都离不开数据库,不过最近做的一个项目的某些数据(比如人员信息、菜单、权限等等)却完全没有涉及任何数据库操作,直接XML搞定。这里无意比较优劣,因为数据库存储和XML存储本就有不同的适用场景,盲目比较毫无意义,只是因为业务需要,仅此而已。先来概念一下——XML,可扩展标记语言,设计宗旨是用来传输数据而非显示数据,其遵循W3C标准,是一种通用的数据交换格式,具有很强的跨平台性,并且数据无需转换,所以,如果你要将数据做跨平台传输,那么把数据保存在 XML 文件中是有好处的。当然,这里要说明,
用户1615728
2018/04/17
3.6K0
JAXB应用实例
【Java】已解决:javax.xml.bind.JAXBException: JAXB
在Java开发过程中,处理XML数据时常会使用JAXB(Java Architecture for XML Binding)进行对象和XML之间的相互转换。然而,使用JAXB时可能会遇到javax.xml.bind.JAXBException: JAXB的异常。这篇文章将深入分析这一异常的背景、原因,提供错误与正确的代码示例,并列出相关的注意事项,帮助开发者有效解决这一问题。
屿小夏
2024/09/07
1.1K0
【Java】已解决:javax.xml.bind.JAXBException: JAXB
Java_数据交换_JAXB_用法入门
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到 XML实例文档。
shirayner
2018/08/10
1.7K0
Java_数据交换_JAXB_用法入门
Java xml数据格式返回实现
前言:对于服务器后端开发,接口返回的数据格式一般要求都是json,但是也有使用xml格式
全栈程序员站长
2022/09/13
1.3K0
Java xml数据格式返回实现
Java对象和XML相互转换
JDK中JAXB相关的重要Class和Interface:(来源于百度百科JAXB)
JokerDJ
2023/11/27
6580
XStream、JAXB 日期(Date)、数字(Number)格式化输出xml
XStream、Jaxb是java中用于对象xml序列化/反序列化 的经典开源项目,利用它们将对象转换成xml时,经常会遇到日期(Date)、数字按指定格式输出的需求,下面是使用示例: 一、日期字段格式化输出 1.1 xStream 1 XStream x = new XStream(); 2 x.registerConverter(new DateConverter("yyyy-MM-dd HH:mm:ss", null,TimeZone.getTimeZone("GMT+8"))); xStream默认
菩提树下的杨过
2018/01/19
2.7K0
XmlRootElement的作用和用法
手动封装实体类转换成xml 实体类 import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; /**  * @ClassName RequetsXml  * @Desc
java攻城狮
2020/10/10
4.3K0
Spring 4 MVC 视图解析器(XML JSON PDF等) 纯注解(带源码)【推荐】
原文地址:http://websystique.com/springmvc/spring-4-mvc-contentnegotiatingviewresolver-example/
明明如月学长
2021/08/27
2.3K0
JAXB使用方式
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到 XML实例文档。
HUC思梦
2020/09/03
2.4K0
java xml与实体类转换「建议收藏」
@XmlRootElement注解定义xml的根节点 通过name改变根节点的xml值
全栈程序员站长
2022/09/16
2.2K0
xml与java对象的快速互转
做流程图的项目时,新的流程定义为xml的,需要对xml与java对象进行互转 查了一下activiti的转换xml方式,发现转换太麻烦了,需要一步步的解析xml 后面发现直接用jaxb就可以很快实现互转,而且现在这个jaxb在jdk内,不需要引入外部的解析xml的包 具体如下: 一.根据XML构建java对象
星痕
2018/09/12
3.9K0
java JAXB 学习
JAXB(Java Architecture for XML Binding)是JDK的一部分,用于Object <-> XML的转换(有点类似于.NET中的XML序列化)。 1、创建XSD 可以使用
菩提树下的杨过
2018/01/24
1.5K0
java JAXB 学习
xml解析系列(二)——用Marshaller和Unmarshaller解析xml
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
逝兮诚
2019/10/30
2.4K0
Java6新特性及使用
以下是Java6中的引入的部分新特性,相比Java5的新特性就少了很多了。关于Java6更详细的介绍可参考这里。
Abalone
2022/07/14
2.1K0
利用Spring MVC搭建REST Service
之前写过一篇 利用JAX-RS快速开发RESTful 服务 今天来看下spring-mvc框架如何实现类似的功能:  一、pom.xml 1 <?xml version="1.0" encodin
菩提树下的杨过
2018/01/24
1.1K0
利用Spring MVC搭建REST Service
java 利用JAX-RS快速开发RESTful 服务
JAX-RS(Java API for RESTful Web Services)同样也是JSR的一部分,详细规范定义见 https://jcp.org/en/jsr/detail?id=311 。从
菩提树下的杨过
2018/01/24
1.4K0
java 利用JAX-RS快速开发RESTful 服务
java程序 如何优雅地读取xml文件
实例xml <?xml version="1.0" encoding="UTF-8"?> <c c1="0"> <d d1="101280101" d2="广州" d3="guangzhou" d
Meet相识
2018/09/12
2.9K0
基于CXF的WebService服务端Java代码
基于CXF的WebService服务端代码  </div> ESBServiceSoap.java     package com.esb.services.commservices; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.jw
用户8671053
2021/09/23
6390
java webservice asmx_WebService-asmx后缀接口调用[通俗易懂]
简述:.asmx是webservice服务程序的后缀名,ASP.NET 使用.asmx 文件来对Web Services的支持。.asmx 文件和.aspx文件一样都属于文本文件。它包含在.aspx文件之中,成为ASP.NET应用程序的一部分。
全栈程序员站长
2022/07/01
2.2K0
相关推荐
Dom4J生成xml和包含CDATA问题
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文