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实现JAVA BEAN与XML之间的转换

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

利用JAXB进行Bean与XML之间的转换

最开始的时候,我们在写实体bean到xml之间的转换一般是通过反射机制手动生成!在进行xml到bean之间的转换则是采用dom4j、sax等解析解析xml然后进行给对象设置值。 现在好了,J...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

JAXB工具实现java实体类和xml之间的转换

1、应用场景 1、在使用WebService实现数据上传下载,数据查询时,可以利用JAXB实现java实体类和xml互相转换 2、可以使用jersey框架实现WebService接口(re...

在Rest服务调用中应用JAXB来实现XML与对象之间的转换

最近在用HttpClien来调用Rest服务,在其中要用到XML与java对象之间的转换,发现用JAXB非常方便。现整理如下。具体应用例子转帖自http://terrencexu.javaeye.co...
  • x_yp
  • x_yp
  • 2011-03-01 16:03
  • 1584

JAXB 实现java对象与xml之间互相转换

利用Marshaller和unMarshaller可在java的object对象和xml之间实现转换 首先创建一个简单的Boy对象 [java] view plaincop...

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

1. 什么是JAXB? JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB...

jaxb2与xml之间相互转换

什么是JAXB?     Java  Architecture for XML Binding (JAXB)是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,J...

JAXB XML与Object之间的转换

关于JAXB: JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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