`
schy_hqh
  • 浏览: 555874 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

使用JAXB完成XML与java对象的转换

 
阅读更多

SAX             处理超大xml时使用
dom4j           通过xpath来解析非常方便,适合处理较小的xml
Xstream--->Stax 基于流的方式处理
Xstream,Jackson 可以将json与java进行转换
JAXB java表中API,专门负责java与xml的互转
java--->xml:marshaller
xml--->java:unmarshaller


JAVB完成对象与XML的互转
package com.hqh.jaxb;

public class Classroom {
	private int id;
	private String name;
	private int grad;
	public Classroom() {
		super();
	}
	public Classroom(int id, String name, int grad) {
		super();
		this.id = id;
		this.name = name;
		this.grad = grad;
	}
	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 getGrad() {
		return grad;
	}
	public void setGrad(int grad) {
		this.grad = grad;
	}
	
	
}



package com.hqh.jaxb;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Student {
	private int id;
	private String name;
	private int age;
	private String sex;
	private Classroom classroom;
	
	public Student() {
		super();
	}

	public Student(int id, String name, int age, String sex, Classroom classroom) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.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 String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}

	public Classroom getClassroom() {
		return classroom;
	}

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



package com.hqh.jaxb;


import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.junit.Test;

public class JAXBTest {
	
	/**Object--->XML*/
	@Test
	public void testMarshaller() throws Exception {
		//对象
		//要使用JAXB转换对象为xml,需要在对应的类上使用@XmlRootElement进行标注
		Classroom classroom = new Classroom(1, "一班", 2013);
		Student jaxbElement = new Student(1, "张三", 22, "男", classroom);
		
		//将student对象转为xml
		JAXBContext ctx = JAXBContext.newInstance(Student.class);
		Marshaller marshaller = ctx.createMarshaller();
		
		//将转换后的xml作为标准打印流输出
		marshaller.marshal(jaxbElement, System.out);
		
		//将转换后的xml以文件形式输出
		File file = new File("src/student.xml");
		if(!file.exists()) {
			file.createNewFile();
		}
		marshaller.marshal(jaxbElement, new FileOutputStream(file, false));
	}

	/**XML--->Object*/
	@Test
	public void testUnMarshaller() throws Exception {
		//XML
		InputStream is = this.getClass().getClassLoader().getResourceAsStream("student.xml");
		
		//将student对象转为xml转为student对象
		JAXBContext ctx = JAXBContext.newInstance(Student.class);
		Unmarshaller unmarshaller = ctx.createUnmarshaller();
		Object obj = unmarshaller.unmarshal(is);
		Student stu = (Student)obj;
		System.out.println(stu.getName()+","+stu.getClassroom().getName());
	}
}



将Student对象转换为xml的结果,很方便
如果存在中文转换,将项目的编码设置为UTF-8,不然中文为乱码
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
	<age>22</age>
	<classroom>
		<grad>2013</grad>
		<id>1</id>
		<name>一班</name>
	</classroom>
	<id>1</id>
	<name>张三</name>
	<sex>男</sex>
</student>
分享到:
评论

相关推荐

    JAXB技术实现xml与java对象互相转化代码教程

    使用java jdk的JAXB技术实现xml与java对象互相转化代码教程: JDK中JAXB相关的重要Class和Interface:(来源于百度百科JAXB) •JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。 •Marshaller接口,将Java...

    JAXB工具类 xml转为java对象 java对象转为xml

    Java Architecture for XML Binding (JAXB) 是Java平台中用于处理XML和Java对象之间转换的一个标准API。它使得在Java应用程序中使用XML数据变得更加方便,无需手动编写大量的转换代码。本教程将详细介绍JAXB如何实现...

    利用JAXB进行xml和javabean之间转换

    总之,JAXB是Java开发中处理XML的强大工具,通过它可以高效地进行XML与Java对象之间的转换,简化了数据交换过程。熟练掌握JAXB的使用,能大大提高开发效率,并让代码更加简洁、易于维护。在实际项目中,可以结合标签...

    JAXB完成XML和Java对象的互转

    该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用...

    webservice之使用jaxb把xml转换Object或把对象转换成xml文件

    在Java世界中,使用JAXB(Java Architecture for XML Binding)库可以方便地实现XML数据与Java对象之间的转换,从而在WebService中轻松处理数据交换。本篇文章将深入探讨如何使用JAXB进行XML到Object以及Object到XML...

    通过JAXB实现完成java对象和xml的互相转换

    在本文中,我们将深入探讨如何使用JAXB实现Java对象与XML的互相转换。 首先,我们需要理解JAXB的基本工作原理。JAXB基于Java注解,这些注解用于标记Java类和它们的属性,以便JAXB知道哪些元素和属性应该映射到XML中...

    用jaxb 实现 xml转java对象技术

    一旦定义了这种映射,JAXB就能自动完成XML的序列化(将Java对象转换为XML)和反序列化(将XML转换为Java对象)。 **JAXB的使用流程** 1. **创建Java模型类**: 首先,我们需要创建一个或多个Java类,这些类将代表...

    JAVA JAXB 解析XML嵌套子节点为字符串

    在Java开发中,JAXB(Java Architecture for XML Binding)是一个标准的API,用于将XML文档与Java对象之间进行互相转换。这个技术对于处理XML数据,尤其是解析和生成XML文档非常有用。当我们面临XML文档中存在嵌套子...

    java 使用 JAXB 将xml转换为 bean 包含xml和dto和读取文件的util类

    总结来说,这个压缩包提供的内容涉及了Java中使用JAXB进行XML与Java对象之间转换的实际应用,以及辅助的DTO和文件读取工具。这些对于理解和实现XML数据处理的Java应用非常有帮助。开发者可以通过学习和使用这些示例...

    使用jaxb将XML转化为JAVA BEAN

    JAXB是Java标准API,它提供了将XML文档与Java对象之间进行自动转换的能力,极大地简化了XML的处理。 首先,我们需要理解JAXB的工作原理。JAXB基于Java反射机制,通过在Java类上使用特定的注解(如@XmlRootElement、...

    JAXB xml与对象转换

    5. **Marshalling**:使用Marshaller对象的`marshal()`方法,将Java对象转换成XML字符串或写入XML文件。 ### 示例代码 ```java import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind....

    XML与Java对象互相转化Demo(Eclipse)

    此外,还可以使用第三方库如Apache Commons Digester或Castor来完成XML与Java对象的转化,它们提供了更灵活的配置和更强大的功能。 总结,这个示例项目主要教授了如何在Java中使用JAXB进行XML与Java对象的互转,这...

    利用jaxb实现xml和bean互转

    例如,一个Web服务可能接收XML请求,然后使用JAXB将其转换为Java对象进行处理,最后再将结果转换为XML响应。 **五、示例代码** ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; ...

    JAXB与xml相互转换实例

    当我们有一个Java对象,并希望将其转换成XML格式时,JAXB会使用已有的Java类和XML Schema信息来生成符合Schema规范的XML文档。这个过程可以通过调用`JAXBContext`的`createMarshaller()`方法创建一个marshaller对象...

    jaxb生成XML例子

    JAXB (Java Architecture for XML Binding) 是 Java 中用于对象到XML以及XML到对象转换的API。它使得开发者能够轻松地将Java对象模型映射到XML文档,并反之亦然。在给定的例子中,我们将深入理解如何使用JAXB注解来...

    JAXB 生成XML文件

    Java Architecture for XML Binding (JAXB) 是Java平台上的一个标准技术,用于在Java对象和XML文档之间进行数据绑定。它允许开发人员通过简单的注解(annotations)将Java类与XML Schema映射,从而实现XML文档的序列...

    jaxb解析xml为对象例子

    源码部分展示了如何通过注解将XML结构与Java对象对应起来,以及如何使用JAXB API进行解析和反序列化。 **文件名:“bjeoms_exceltool”** 虽然提供的文件名“bjeoms_exceltool”与标题和描述中的JAXB解析XML主题不...

    jaxb (XML操作)

    3. **序列化(Marshalling)**:相反,当需要将Java对象转换为XML文档时,JAXB使用Marshaller接口将Java对象转换为XML格式。这个过程是将Java对象"序列化"为XML字符串或写入XML文件。 **使用JAXB的关键步骤:** 1....

    jaxb xml转化为对象,对象转化为xml,xml转化为xsd,表转化为对象

    Java Architecture for XML Binding (JAXB) 是Java平台中用于处理XML和Java对象之间转换的一个标准技术。它允许我们将XML文档转换为Java对象,反之亦然,这样就能方便地在XML和Java应用程序之间交换数据。在Java SE...

Global site tag (gtag.js) - Google Analytics