JAXB 实现bean与xml之间的转换

原创 2016年08月31日 10:13:15

之前一直用dom解析xml,在生成和解析的过程中都有点麻烦,最近又学习了JAXB解析xml ,并且很方便的实现javaBean 与xml 的互转,很不错,直接看效果:

实体类如下:
package xmlTest;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@SuppressWarnings("restriction")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Student")
public class Student {
    @XmlElement(name = "StuID")
    private String Id;
    @XmlElement(name = "StuName")
    private String StuName;
    @XmlElement(name = "StuSex")
    private String StuSex;
    @XmlElement(name = "Grade")
    private String Grade;
    public String getId() {
        return Id;
    }
    public String getStuName() {
        return StuName;
    }
    public String getStuSex() {
        return StuSex;
    }
    public void setId(String id) {
        Id = id;
    }
    public void setStuName(String stuName) {
        StuName = stuName;
    }
    public void setStuSex(String stuSex) {
        StuSex = stuSex;
    }

}
测试类:
package xmlTest;

import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
@SuppressWarnings("restriction")
public class xmlTest {

    public static void main(String[] args) throws JAXBException {
        xmlTest test=new xmlTest();
      Student stu=new Student();
      stu.setId("20123094");
      stu.setStuName("Bin");
      stu.setStuSex("男");
    String xml=test.beanToXml(stu);
    System.out.println("******************下面是obj转换为xml结果************************");
    System.out.println(xml);
    System.out.println("******************以下为xml转对象过程************************");
    Student student=new Student();
    student = xmlToBean(xml, Student.class);
    System.out.println("xml 转换位new student 结果:");
    System.out.println("student.getStuName()="+student.getStuName());
    System.out.println("student.getStuSex()="+student.getStuSex());

    }

/**
 * 对象转xml 
 * @param obj
 * @return xml
 * @throws JAXBException
 */
    public String beanToXml(Object obj) throws JAXBException{
        String xml="";
          JAXBContext jaxbContext = JAXBContext.newInstance(obj.getClass());
            Marshaller jaxbMarshaller = jaxbContext.createMarshaller();   //Marshaller 类负责管理将 Java 内容树序列化回 XML 数据的过程
            jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);//是否格式化生成的xml串  
            jaxbMarshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");// 编码格式  
            jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);// 默认false表示xml指令存在   即是否包含 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
            StringWriter writer = new StringWriter();
            jaxbMarshaller.marshal(obj, writer);
            xml=writer.toString();
        return xml;
    }

    /**
     * 
     * @param xml class
     * @return  
     * @throws JAXBException
     */
    @SuppressWarnings("unchecked")
    public static <T> T xmlToBean(String xml, Class<T> c) {
        T t = null;
        try {
            JAXBContext context = JAXBContext.newInstance(c);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            t = (T) unmarshaller.unmarshal(new StringReader(xml));
            return t;
        } catch (Exception e) {
            System.out.println("转换出错");
            return t;
        }
    }
}

效果截图:
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

JAXB XML转Bean,Bean转XML

xml转Bean JAXBContext context = JAXBContext.newInstance(Bean.class); Unmarshaller unmarshaller = co...
  • qq_34124060
  • qq_34124060
  • 2017年04月01日 11:24
  • 68

JAXB实现JAVA BEAN与XML之间的转换

JAXB主要用来实现对象和XML之间的序列化和反序列化,关于JAXB的介绍就不多说了,网上一搜一大把,这里主要总结下基本使用方法和一些注意事项 首先定义两个示例类ClassA,ClassB,用于...
  • jclpc
  • jclpc
  • 2015年10月05日 17:20
  • 1453

使用JAXB来完成Javabean与XML文件(字符串)之间的相互转换

1. 什么是JAXB? JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB...
  • SimpleMale
  • SimpleMale
  • 2016年07月20日 13:10
  • 4406

使用jaxb将对象和xml进行互转

jaxb是java自带的包中。话不多说,以例子为基准 import java.io.StringReader; import javax.xml.bind.JAXBContext; import...
  • haidong_IT
  • haidong_IT
  • 2014年05月12日 16:31
  • 682

JAXB中Java对象和XML之间的转换

一.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType@XmlElement@XmlRootElement@XmlAttribute@XmlAccessor...
  • tiantiandjava
  • tiantiandjava
  • 2014年10月08日 15:27
  • 912

利用JAXB实现xml和bean之间的转换(一)

JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON...
  • LchinaM
  • LchinaM
  • 2016年06月29日 19:00
  • 6905

Json、JavaBean、Xml之间的相互转换工具

工作中经常要用到Json、JavaBean、Xml之间的相互转换,用到了很多种方式,这里做下总结,以供参考。 现在主流的转换工具有json-lib、jackson、fastjson等,我为大家一...
  • yangyan_0214
  • yangyan_0214
  • 2014年12月24日 16:43
  • 627

不需要@XmlRootElement如何使用JAXB解组javabean

很多资料说,使用JAXB将XML转换为javabean时必须在javabean上增加@XmlRootElement注解,现在找到了一种不需要增加注解的方式,代码如下:        假如XML格式如...
  • achilles12345
  • achilles12345
  • 2015年10月22日 22:06
  • 1524

JAXB转换xml中文乱码问题解决

m.setProperty(Marshaller.JAXB_ENCODING, "GBK"); //防止文件中文乱码
  • lieyanhaipo
  • lieyanhaipo
  • 2016年10月08日 11:30
  • 1458

JAXB 实现JavaBean与xml互转(二)-封装

上篇博客对JAXB的进行了相关介绍以及简单的实例,但是运用到项目中显然还不够灵活,下面我们继续来对其进行封装。 1、xmlToObject和objectToXml方法封装 . . . 总的来说,封装并...
  • akkzhjj
  • akkzhjj
  • 2015年09月29日 21:20
  • 2188
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAXB 实现bean与xml之间的转换
举报原因:
原因补充:

(最多只允许输入30个字)