第一步,Classroom类:Classroom.java
package com.test.jaxb; 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(); } }
第二步,Student类:Student.java
package com.test.jaxb; import javax.xml.bind.annotation.XmlRootElement; @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; } public Student() { super(); } }
编写两个测试方法测试jaxb编排和反编排Student对象
TestJaxb.java
package com.test.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; public class TestJaxb { @Test public void test01() { try { JAXBContext ctx = JAXBContext.newInstance(Student.class); Marshaller marshaller = ctx.createMarshaller(); Student stu = new Student(1,"张三",21,new Classroom(1,"计算机科学与技术",2010)); marshaller.marshal(stu, System.out); } catch (JAXBException e) { e.printStackTrace(); } } @Test public void test02() { try { String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><age>21</age><classroom><grade>2010</grade><id>1</id><name>计算机科学与技术</name></classroom><id>1</id><name>张三</name></student>"; JAXBContext ctx = JAXBContext.newInstance(Student.class); Unmarshaller um = ctx.createUnmarshaller(); Student stu = (Student)um.unmarshal(new StringReader(xml)); System.out.println(stu.getName()+","+stu.getClassroom().getName()); } catch (JAXBException e) { e.printStackTrace(); } } }
注意:
1.编排和反编排对象的时候,要用注解@XmlRootElement指明对象是根节点
2.如果Student类或Classroom类中没有默认的构造器,会出下错误信息:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
com.test.jaxb.Student does not have a no-arg default constructor.
this problem is related to the following location:
at com.test.jaxb.Student
因为通过Student类生成JAXBContext对象时,要用到它的默认构造器。
相关推荐
Java Architecture for XML Binding (JAXB) 是一个Java标准,它提供了在Java对象和XML文档之间进行自动转换的能力。这项技术极大地简化了XML数据处理,使得开发者可以方便地将Java对象序列化为XML,或者从XML数据中...
而JAXB(Java Architecture for XML Binding)是Java提供的一种标准API,它允许我们轻松地在Java对象(javabean)和XML文档之间进行转换。通过JAXB,开发者可以避免手动编写XML解析和序列化代码,极大地提高了开发...
要将XML转换为Java对象,首先需要一个对应的Java类,该类的字段与XML元素对应。JAXB通过注解这些字段来完成映射,如`@XmlElement`、`@XmlAttribute`等。以下是一个简单的例子: ```java import javax.xml.bind....
JAXB与其他XML处理技术(如DOM、SAX、StAX)相比,更注重于对象模型与XML之间的绑定,适用于需要频繁进行对象与XML转换的场景。而DOM适合处理小规模的XML文档,SAX和StAX则适用于大文件流式处理。 总结,JAXB是Java...
最后,使用JAXB的`Marshaller`类将Java对象转换为XML文档: ```java JAXBContext context = JAXBContext.newInstance(mySchema.class); Marshaller marshaller = context.createMarshaller(); marshaller.set...
Java Architecture for XML Binding (JAXB) 是Java平台上的一个标准技术,它允许在Java对象(如JavaBeans)和XML文档之间进行互相转换。这个过程被称为对象绑定,它简化了XML数据的处理,使得开发人员无需手动编写...
使用java jdk的JAXB技术实现xml与java对象互相转化代码教程: JDK中JAXB相关的重要Class和Interface:(来源于百度百科JAXB) •JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。 •Marshaller接口,将Java...
4. **Unmarshalling**: 反之,将XML转换回Java对象的过程称为 unmarshalling。这可以通过使用JAXB的`Unmarshaller`接口完成。 **二、JAXB的使用步骤** 1. **创建Java Bean**: 首先,定义一个或多个Java类,它们...
在Java开发中,JAXB(Java Architecture for XML Binding)是一个标准的API,用于将XML文档与Java对象之间进行互相转换。这个技术对于处理XML数据,尤其是解析和生成XML文档非常有用。当我们面临XML文档中存在嵌套子...
该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用...
1. **自动化转换**:JAXB自动处理XML和Java对象之间的转换,无需手动编写解析和序列化的代码。 2. **效率高**:由于是Java平台的标准,JAXB的性能表现良好,且内存占用相对较低。 3. **灵活性**:支持动态绑定,可以...
在Java对象和XML之间的转换过程中,JAXB主要涉及到以下几个关键概念: 1. **Java类与XML Schema绑定**: JAXB使用`@XmlRootElement`和`@XmlElement`等注解将Java类的字段与XML元素对应。XML Schema定义了XML文档的...
总结来说,这个压缩包提供的内容涉及了Java中使用JAXB进行XML与Java对象之间转换的实际应用,以及辅助的DTO和文件读取工具。这些对于理解和实现XML数据处理的Java应用非常有帮助。开发者可以通过学习和使用这些示例...
Java Architecture for XML Binding (JAXB) 是Java平台中用于处理XML和Java对象之间转换的一个标准技术。它允许我们将XML文档转换为Java对象,反之亦然,这样就能方便地在XML和Java应用程序之间交换数据。在Java SE...
当我们有一个Java对象,并希望将其转换成XML格式时,JAXB会使用已有的Java类和XML Schema信息来生成符合Schema规范的XML文档。这个过程可以通过调用`JAXBContext`的`createMarshaller()`方法创建一个marshaller对象...
JAXB (Java Architecture for XML Binding) 是 Java 中用于对象到XML以及XML到对象转换的API。它使得开发者能够轻松地将Java对象模型映射到XML文档,并反之亦然。在给定的例子中,我们将深入理解如何使用JAXB注解来...
生成的Java类包含了getter和setter方法,使得你可以直接在代码中创建和操作这些对象,然后使用JAXB将其序列化为XML,或者反序列化XML到Java对象。例如: ```java import javax.xml.bind.JAXBContext; import javax....
Java Architecture for XML Binding (JAXB) 是Java平台上的一个标准技术,用于在Java对象和XML文档之间进行数据绑定。它允许开发人员通过简单的注解(annotations)将Java类与XML Schema映射,从而实现XML文档的序列...
JAXB则是一种对象到XML和XML到对象的绑定框架,它可以将Java对象转换为XML,并将XML数据转换回相应的Java对象。JAXB的优势在于其自动化程度高,只需通过注解或配置文件,就能轻松地映射XML结构到Java对象。 结合...
3. **序列化(Marshalling)**:相反,当需要将Java对象转换为XML文档时,JAXB使用Marshaller接口将Java对象转换为XML格式。这个过程是将Java对象"序列化"为XML字符串或写入XML文件。 **使用JAXB的关键步骤:** 1....