JDK自带XML和java对象相互转换

原创 2016年08月28日 14:10:40

下面使用的是JDK自带的类,没有引用任何第三方jar包

 

Unmarshaller 类使客户端应用程序能够将 XML 数据转换为 Java 内容对象树。

备注:marshal(序列化、排列、整理)

Marshaller 类使客户端应用程序能够将 Java 内容树转换回 XML 数据。

package hb.jaxb;  

import javax.xml.bind.annotation.XmlRootElement;  
//1、需要转换的model对象一定要添加@XmlRootElement注解,其里面的其他对象(Classroom)则不需要
@XmlRootElement  
public class Student {  
    private int id;  
    private String name;  
    private int age;  
    private Classroom classroom;  

    public int getId() {  
        return id;  
    }  

    public void setId(int id) {  
        this.id = id;  
    }  

    public String getName() {  
        return name;  
    }  

    public void setName(String name) {  
        this.name = name;  
    }  

    public int getAge() {  
        return age;  
    }  

    public void setAge(int age) {  
        this.age = age;  
    }  

    public Classroom getClassroom() {  
        return classroom;  
    }  

    public void setClassroom(Classroom classroom) {  
        this.classroom = classroom;  
    }  

    public Student(int id, String name, int age, Classroom classroom) {  
        super();  
        this.id = id;  
        this.name = name;  
        this.age = age;  
        this.classroom = classroom;  
    }  

    //无参够着函数一定需要,否则JXBContext无法正常解析。  
    public Student() {  
        super();  
    }  
}


package hb.jaxb;  
//2、需要转换的model对象一定要有不带参数的构造方法,包括该对象里面引用的对象。
public class Classroom {  
    private int id;  
    private String name;  
    private int grade;  

    public int getId() {  
        return id;  
    }  

    public void setId(int id) {  
        this.id = id;  
    }  

    public String getName() {  
        return name;  
    }  

    public void setName(String name) {  
        this.name = name;  
    }  

    public int getGrade() {  
        return grade;  
    }  

    public void setGrade(int grade) {  
        this.grade = grade;  
    }  

    public Classroom(int id, String name, int grade) {  
        super();  
        this.id = id;  
        this.name = name;  
        this.grade = grade;  
    }  

    public Classroom() {  
        super();  
    }  

}



package hb.jaxb;  

import java.io.StringReader;  

import javax.xml.bind.JAXBContext;  
import javax.xml.bind.JAXBException;  
import javax.xml.bind.Marshaller;  
import javax.xml.bind.Unmarshaller;  
import org.junit.Test;  
//Eclipse console 
//中文乱码解决 eclipse-->Run-->Run Configuration-->Common--> Console Encoding-->Others-->UTF-8
//参考博文:http://hbiao68.iteye.com/blog/1958413
public class TestJaxb {  

    @Test  
    public void beanToXML() {  
        Classroom classroom = new Classroom(1, "软件工程", 4);  
        Student student = new Student(101, "张三", 22, classroom);  

        try {  
            JAXBContext context = JAXBContext.newInstance(Student.class);  
            Marshaller marshaller = context.createMarshaller();  
            marshaller.marshal(student, System.out);  
        } catch (JAXBException e) {  
            e.printStackTrace();  
        }  

    }  
      
    @Test  
    public void XMLStringToBean(){  
        String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><age>22</age><classroom><grade>4</grade><id>1</id><name>软件工程</name></classroom><id>101</id><name>张三</name></student>";  
        try {  
            JAXBContext context = JAXBContext.newInstance(Student.class);  
            Unmarshaller unmarshaller = context.createUnmarshaller();  
            Student student = (Student)unmarshaller.unmarshal(new StringReader(xmlStr));  
            System.out.println(student.getAge());  
            System.out.println(student.getClassroom().getName());  
        } catch (JAXBException e) {  
            e.printStackTrace();  
        }  
          
    }  
}


参考博文:

http://hbiao68.iteye.com/blog/1958413


本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1759334

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

玩转Java对象和XML相互转换

最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于项目很庞大,我又是临时调度过去,导致在按照项目组长的要求进行写代码的同时,总是在这块云里雾里,最近才慢慢开始搞清楚项目中具体的使用缘由...
  • songdeitao
  • songdeitao
  • 2013年12月13日 18:39
  • 30663

java xml与实体对象 互相转换

本文转载至:http://blog.csdn.net/sd4015700/article/details/39474893 最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2017年02月23日 19:51
  • 3942

java关于对象(javabean)与xml之间的相互转换

今天我们要探讨的一个问题是,如何将xml格式的字符串转换成对象,以及对象转换成xml字符串。 简介 现如今,虽然数据的传输大部分都是用json格式来进行传输,但是xml毕竟也会有一些老的项目在进行...
  • liboyang71
  • liboyang71
  • 2017年06月14日 17:21
  • 3262

java读取xml文件并转换成对象,并进行修改

java读取xml文件并转换成对象,并进行修改
  • weikzhao0521
  • weikzhao0521
  • 2017年08月24日 10:12
  • 707

dom4j将xml转换成对象

dom4j将xml转换成对象
  • cowbin2012
  • cowbin2012
  • 2015年08月03日 23:29
  • 3133

JAXB的使用(java对象和xml文本的相互转换)

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向...
  • u014727260
  • u014727260
  • 2017年02月10日 00:04
  • 420

Spring MVC中利用注解实现XML和Java对象之间的转换

在Spring MVC中,可以通过注解@RequestBody直接将输入的XML字符串转为Java对象,其底层实际上是通过JAXB来实现的。JAXB直接包含在JDK中,通过Demo了解使用:在Bean...
  • yy254117440
  • yy254117440
  • 2017年01月04日 23:46
  • 2027

XML报文转JAVA对象-JAVA对象转XML报文

JAVA 实体类 Person.java public class Person { private int id; private String username; private St...
  • bestcxx
  • bestcxx
  • 2016年08月08日 14:03
  • 4756

java中把对象转成xml(用JDK实现)

java中把对象转化成xml文件有多种方式,借助dom4j可以转,序列化成xml也可以,借助simpleframework框架中一些工具类也可以简单的把对象序列成xml文件,感兴趣的程序猿们可以网上搜...
  • chenleixing
  • chenleixing
  • 2015年01月19日 22:24
  • 3698

玩转Java对象和XML相互转换

最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于项目很庞大,我又是临时调度过去,导致在按照项目组长的要求进行写代码的同时,总是在这块云里雾里,最近才慢慢开始搞清楚项目中具体的使用缘由...
  • sd4015700
  • sd4015700
  • 2014年09月22日 12:47
  • 11883
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JDK自带XML和java对象相互转换
举报原因:
原因补充:

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