- 浏览: 600126 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
JDK中JAXB相关的重要Annotation:
@XmlType,将Java类或枚举类型映射到XML模式类型
@XmlAccessorType(XmlAccessType.FIELD) ,控制字段或属性的序列化。FIELD表示JAXB将自动绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML。其他值还有XmlAccessType.PROPERTY和XmlAccessType.NONE。
@XmlAccessorOrder,控制JAXB 绑定类中属性和字段的排序。
@XmlJavaTypeAdapter,使用定制的适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),以序列化Java类为XML。
@XmlElementWrapper ,对于数组或集合(即包含多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器)。
@XmlRootElement,将Java类或枚举类型映射到XML元素。
@XmlElement,将Java类的一个属性映射到与属性同名的一个XML元素。
@XmlAttribute,将Java类的一个属性映射到与属性同名的一个XML属性。
在以上的注解中,用的最多的是@XMLType,@XmlAccessorType,@XmlRootElement。
例子:
参考:http://blog.csdn.net/songdeitao/article/details/17304395
JDK中JAXB相关的重要Annotation:
@XmlType,将Java类或枚举类型映射到XML模式类型
@XmlAccessorType(XmlAccessType.FIELD) ,控制字段或属性的序列化。FIELD表示JAXB将自动绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML。其他值还有XmlAccessType.PROPERTY和XmlAccessType.NONE。
@XmlAccessorOrder,控制JAXB 绑定类中属性和字段的排序。
@XmlJavaTypeAdapter,使用定制的适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),以序列化Java类为XML。
@XmlElementWrapper ,对于数组或集合(即包含多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器)。
@XmlRootElement,将Java类或枚举类型映射到XML元素。
@XmlElement,将Java类的一个属性映射到与属性同名的一个XML元素。
@XmlAttribute,将Java类的一个属性映射到与属性同名的一个XML属性。
在以上的注解中,用的最多的是@XMLType,@XmlAccessorType,@XmlRootElement。
例子:
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Serializable; 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; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; /** * * 利用JAXB技术进行对象和XML文件之间的转换 * * 封装了XML转换成object,object转换成XML的代码 * * @author Steven * */ public class XMLUtil { /** * 将对象直接转换成String类型的 XML输出 * * @param obj * @return */ public static String convertToXml(Object obj) { // 创建输出流 StringWriter sw = new StringWriter(); try { // 利用jdk中自带的转换类实现 JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); // 格式化xml输出的格式 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 将对象转换成输出流形式的xml marshaller.marshal(obj, sw); } catch (JAXBException e) { e.printStackTrace(); } return sw.toString(); } /** * 将对象根据路径转换成xml文件 * * @param obj * @param path * @return */ public static void convertToXml(Object obj, String path) { try { // 利用jdk中自带的转换类实现 JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); // 格式化xml输出的格式 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 将对象转换成输出流形式的xml // 创建输出流 FileWriter fw = null; try { fw = new FileWriter(path); } catch (IOException e) { e.printStackTrace(); } marshaller.marshal(obj, fw); } catch (JAXBException e) { e.printStackTrace(); } } @SuppressWarnings("unchecked") /** * 将String类型的xml转换成对象 */ public static Object convertXmlStrToObject(Class clazz, String xmlStr) { Object xmlObject = null; try { JAXBContext context = JAXBContext.newInstance(clazz); // 进行将Xml转成对象的核心接口 Unmarshaller unmarshaller = context.createUnmarshaller(); StringReader sr = new StringReader(xmlStr); xmlObject = unmarshaller.unmarshal(sr); } catch (JAXBException e) { e.printStackTrace(); } return xmlObject; } @SuppressWarnings("unchecked") /** * 将file类型的xml转换成对象 */ public static Object convertXmlFileToObject(Class clazz, String xmlPath) { Object xmlObject = null; try { JAXBContext context = JAXBContext.newInstance(clazz); Unmarshaller unmarshaller = context.createUnmarshaller(); FileReader fr = null; try { fr = new FileReader(xmlPath); } catch (FileNotFoundException e) { e.printStackTrace(); } xmlObject = unmarshaller.unmarshal(fr); } catch (JAXBException e) { e.printStackTrace(); } return xmlObject; } public static void main(String[] args) { //把XML转换成对象 String path = "D:\\MyEclipse 8.6\\zhngdps\\book.xml"; System.out.println("---将File类型的xml转换成对象 Start---"); Book book = (Book) XMLUtil.convertXmlFileToObject(Book.class, path); System.out.println(book.getPrice()); System.out.println("---将File类型的xml转换成对象 End---"); //把对象转换成XML Content content = new Content("123", "战争与和平", "第三区域") ; Book book1 = new Book(content, "23"); path = "D:\\book.xml"; System.out.println("---将对象转换成File类型的xml Start---"); XMLUtil.convertToXml(book1, path); System.out.println("---将对象转换成File类型的xml End---"); } }; /** * * @author ideal * */ @XmlAccessorType(XmlAccessType.FIELD) // XML文件中的根标识 @XmlRootElement(name = "book") // 控制JAXB 绑定类中属性和字段的排序 @XmlType(propOrder = { "content", "price", }) class Book implements Serializable { /** * */ private static final long serialVersionUID = 1L; private Content content ; private String price ; //需要无参构造方法 public Book() { super(); } public Book(Content content, String price) { super(); this.content = content; this.price = price; } public Content getContent() { return content; } public void setContent(Content content) { this.content = content; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } } ; /** * * @author ideal * */ @XmlAccessorType(XmlAccessType.FIELD) // XML文件中的根标识 @XmlRootElement(name = "User") // 控制JAXB 绑定类中属性和字段的排序 @XmlType(propOrder = { "id", "title", "file", }) class Content implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String id ; private String title ; private String file ; //需要无参构造方法 public Content() { super(); } public Content(String id, String title, String file) { super(); this.id = id; this.title = title; this.file = file; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getFile() { return file; } public void setFile(String file) { this.file = file; } };
参考:http://blog.csdn.net/songdeitao/article/details/17304395
发表评论
文章已被作者锁定,不允许评论。
相关推荐
总之,JAXB是Java开发中处理XML的强大工具,通过它可以高效地进行XML与Java对象之间的转换,简化了数据交换过程。熟练掌握JAXB的使用,能大大提高开发效率,并让代码更加简洁、易于维护。在实际项目中,可以结合标签...
要将XML转换为Java对象,首先需要一个对应的Java类,该类的字段与XML元素对应。JAXB通过注解这些字段来完成映射,如`@XmlElement`、`@XmlAttribute`等。以下是一个简单的例子: ```java import javax.xml.bind....
Java Architecture for XML Binding (JAXB) 是一个Java标准,它提供了在Java对象和XML文档之间进行自动转换的能力。这项技术极大地简化了XML数据处理,使得开发者可以方便地将Java对象序列化为XML,或者从XML数据中...
JAXB与其他XML处理技术(如DOM、SAX、StAX)相比,更注重于对象模型与XML之间的绑定,适用于需要频繁进行对象与XML转换的场景。而DOM适合处理小规模的XML文档,SAX和StAX则适用于大文件流式处理。 总结,JAXB是Java...
1. **自动化转换**:JAXB自动处理XML和Java对象之间的转换,无需手动编写解析和序列化的代码。 2. **效率高**:由于是Java平台的标准,JAXB的性能表现良好,且内存占用相对较低。 3. **灵活性**:支持动态绑定,可以...
Java Architecture for XML Binding(JAXB)是Java平台上的一个标准技术,它允许开发者在XML文档和Java对象之间进行无缝转换。这项技术的核心理念是通过自动的编译过程,将XML Schema(XSD)定义的数据结构映射为...
使用java jdk的JAXB技术实现xml与java对象互相转化代码教程: JDK中JAXB相关的重要Class和Interface:(来源于百度百科JAXB) •JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。 •Marshaller接口,将Java...
在Java对象和XML之间的转换过程中,JAXB主要涉及到以下几个关键概念: 1. **Java类与XML Schema绑定**: JAXB使用`@XmlRootElement`和`@XmlElement`等注解将Java类的字段与XML元素对应。XML Schema定义了XML文档的...
在Java开发中,JAXB(Java Architecture for XML Binding)是一个标准的API,用于将XML文档与Java对象之间进行互相转换。这个技术对于处理XML数据,尤其是解析和生成XML文档非常有用。当我们面临XML文档中存在嵌套子...
4. **Unmarshalling**: 反之,将XML转换回Java对象的过程称为 unmarshalling。这可以通过使用JAXB的`Unmarshaller`接口完成。 **二、JAXB的使用步骤** 1. **创建Java Bean**: 首先,定义一个或多个Java类,它们...
Java Architecture for XML Binding (JAXB) 是Java平台中用于处理XML和Java对象之间转换的一个标准技术。它允许我们将XML文档转换为Java对象,反之亦然,使得数据交换变得更加简单。在Java开发中,JAXB是处理XML数据...
JAXB (Java Architecture for XML Binding) 是 Java 中用于对象到XML以及XML到对象转换的API。它使得开发者能够轻松地将Java对象模型映射到XML文档,并反之亦然。在给定的例子中,我们将深入理解如何使用JAXB注解来...
对象与XML之间的转换是一项常见的任务,特别是在数据交换、配置文件处理或序列化场景中。本教程将详细介绍如何在Java、Python和C#这三种主流编程语言中实现对象到XML以及XML到对象的转换,以满足不同需求。 **1. ...
Java Architecture for XML Binding (JAXB) 是Java平台上的一个标准技术,用于在Java对象和XML文档之间进行数据绑定。它允许开发人员通过简单的注解(annotations)将Java类与XML Schema映射,从而实现XML文档的序列...
**JAXB(Java Architecture for XML Binding)** 是Java平台中用于处理XML的一种强大的工具,它提供了将XML文档与Java对象之间的映射,从而方便XML数据的解析和生成。通过JAXB,开发者可以轻松地实现XML数据到Java...
【JAVA6新特性:JAXB简介】 Java Architecture for XML Binding(JAXB)是Java平台上的一个...通过注解,JAXB提供了更加直观和灵活的方式来绑定Java对象和XML文档,这对于需要频繁进行对象-XML转换的项目尤其有价值。
总结来说,这个压缩包提供的内容涉及了Java中使用JAXB进行XML与Java对象之间转换的实际应用,以及辅助的DTO和文件读取工具。这些对于理解和实现XML数据处理的Java应用非常有帮助。开发者可以通过学习和使用这些示例...
- 为XML元素创建对应的Java类,并使用JAXB的注解如@XmlRootElement、@XmlElement等来标记属性与XML元素之间的映射关系。 - 可以使用@XmlAccessorType注解来指定字段或属性的默认绑定规则。 3. **JAXB解析和序列化...
4. **对象到XML转换** 使用`Marshaller`类,我们可以将Java对象转换为XML文档。首先,创建一个`marshaller`实例,然后调用`marshal()`方法,传入要转换的对象和输出目的地,例如文件或`OutputStream`。 5. **XML到...
2. **Java对象与XML之间的映射**:JAXB的核心功能就是建立Java类和XML元素之间的映射关系。这通常通过两种方式实现:一是使用注解(@XmlRootElement、@XmlElement等),二是通过XML绑定元数据(如XML Schema或...