`

xml与java技术用Castor进行数据绑定

 
阅读更多

Castor简介:

CastorOXM的一个实现,主要完成XML文件数据与Java类实体间的映射。(实际上,Castor的功能远远不止这些,只不过这个是被人熟知和常用的罢了)。如果你现在还在使用dom和sax处理xml文档,只能说你太落伍了!!!

废话不多说,下面开始正题

功能说明:这里有一个student类,当执行createStudent时,会将一个student实体转化输出到一个XML文档中。当执行readStudent时,将会从xml文档中读取信息并生成一个student实体。

Student实体类很简单,就是平常的实体,没有任何特殊标记:

Student.java

package com.guan.castorTest.xmodel;

 

import java.util.Date;

 

public class Student {

    private String studentName;

    private String studentId;

    private Date birthDay;

    private int id;

    public String getStudentName() {

       return studentName;

    }

    public void setStudentName(String studentName) {

       this.studentName = studentName;

    }

    public String getStudentId() {

       return studentId;

    }

    public void setStudentId(String studentId) {

       this.studentId = studentId;

    }

    public Date getBirthDay() {

       return birthDay;

    }

    public void setBirthDay(Date birthDay) {

       this.birthDay = birthDay;

    }

    public int getId() {

       return id;

    }

    public void setId(int id) {

       this.id = id;

    }

}

 

需要写一个mapping,完成Student类和xml文档之间的具体映射,就是Student属性和xml文档的属性和字段之间的映射。

 

<!DOCTYPE databases PUBLIC

"-//EXOLAB/Castor Mapping DTD Version 1.0//EN"

"http://castor.exolab.org/mapping.dtd">

<mapping>

<!—class标签指明需要映射的类,name是这个类的类名,注意要写全哦!

Map-to只有根源素对应的类才配置这个属性

Field 类字段和xml字段之间的映射 filed中的name是类字段的名字

Bind-xml xml文档中对应的字段信息,name是名字,node指明是element还是attribute,默认是element -->

    <class name="com.guan.castorTest.xmodel.Student">

       <map-to xml="student"/>

       <field name="birthDay">

           <bind-xml name="birth-day" node="attribute"/>

       </field>

       <field name="id">

           <bind-xml name="id" node="attribute"/>

       </field>

       <field name="studentName">

           <bind-xml name="student-name"/>

       </field>

       <field name="studentId">

           <bind-xml name="student-id" node="attribute"/>

       </field>         

    </class>

</mapping>

需要注意的是,一个映射文件可以映射多个类。并且Castor可以提供一个默认的mapping(如果你不想写这个文件的话,但是一般对负责的结构,还是要写这样的mapping文件的),在默认的映射中要遵守相应的命名规则,就是说javastudentName(驼峰表示法)映射到xml中的student-name

 

就这样我们的主要工作完成,下面是写测试,本次示例仍然使用junit。测试代码如下:

StudentTest.java

package com.guan.castorTest.xmodel;

 

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.Reader;

import java.io.Writer;

import java.util.Date;

 

 

import org.exolab.castor.mapping.Mapping;

import org.exolab.castor.mapping.MappingException;

import org.exolab.castor.xml.MarshalException;

import org.exolab.castor.xml.Marshaller;

import org.exolab.castor.xml.Unmarshaller;

import org.exolab.castor.xml.ValidationException;

import org.junit.Test;

 

public class StudentTest {

    @Test

    public void createStudent() throws IOException, MappingException, MarshalException, ValidationException

    {

       Student student = new Student();//创建一个学生实例

       student.setBirthDay(new Date());

       student.setId(1);

       student.setStudentId("S05080444");

       student.setStudentName("张三");

      

       Mapping mapping = new Mapping();//创建一个mapping,载入mapping文件

       mapping.loadMapping("mapping.xml");

      

       File file = new File("student.xml");//输出的xml文件,以覆写方式写入

       Writer writer = new FileWriter(file);

       Marshaller marshaller = new Marshaller(writer);//编组

       marshaller.setMapping(mapping);//设置mapping

       marshaller.marshal(student);//student输出到xml文档中

    }

   

    @Test

    public void readStudent() throws IOException, MappingException, MarshalException, ValidationException

    {

       Student student;

      

       Mapping mapping = new Mapping();

       mapping.loadMapping("mapping.xml");

      

       File file = new File("student.xml");//读取的文档

       Reader reader = new FileReader(file);

       Unmarshaller umarshaller = new Unmarshaller(mapping);//解组

       student = (Student) umarshaller.unmarshal(reader);//得到实体

      

       System.out.println(student.getId());//输出实体

       System.out.println(student.getStudentId());

       System.out.println(student.getStudentName());

       System.out.println(student.getBirthDay());

      

    }

}

 

通过junit test 执行createStudent得到下面结果:

Log输出:

2010-8-4 22:58:59 org.exolab.castor.mapping.Mapping setBaseURL

信息: mapping.xml is not a URL, trying to convert it to a file URL

2010-8-4 22:58:59 org.exolab.castor.mapping.Mapping loadMapping

信息: Loading mapping descriptors from mapping.xml

 

获得的xml中的信息:

<?xml version="1.0" encoding="UTF-8"?>

<student birth-day="2010-08-04T22:58:59.281+08:00" id="1" student-id="S05080444">

<student-name>张三</student-name>

</student>

 

执行readStudent得到:

信息: mapping.xml is not a URL, trying to convert it to a file URL

2010-8-4 23:00:41 org.exolab.castor.mapping.Mapping loadMapping

信息: Loading mapping descriptors from mapping.xml

1

S05080444

张三

Wed Aug 04 22:58:59 CST 2010

更多复杂操作可以参考:http://hi.baidu.com/higuang/blog/item/7d63cbc4de9fecc639db4904.html

 

需要的jar包:

castor-1.3.jar

castor-1.3-core.jar

commons-logging.jar

分享到:
评论

相关推荐

    XML_与_Java_技术_用_Castor_进行数据绑定.doc

    XML与Java技术之间的一种高效交互方式是通过数据绑定来实现的,其中Castor是一个流行的开源框架。数据绑定允许开发者将XML文档直接映射到Java对象,反之亦然,从而简化了处理XML数据的过程。这种方式特别适合那些...

    XML_与_Java_技术_用_Castor_进行数据绑定

    在Java中,Castor是一个强大的工具,它提供了XML到Java对象以及Java对象到XML的映射功能,实现了数据绑定,简化了XML的处理。 Castor数据绑定允许开发者将XML文档直接映射为Java对象,反之亦然。这极大地提高了...

    castor1-2(java and xml 数据绑定过程所需数据包)

    Castor是Java中一个强大的数据绑定框架,它允许开发者将XML文档与Java对象之间进行映射,从而实现XML数据的序列化和反序列化。在Java应用开发中,处理XML数据时,通常需要将XML文件内容转换为Java对象,或者将Java...

    Java与XML数据绑定

    Java与XML数据绑定是将XML文档中的数据结构映射到Java对象的过程,反之亦然。这一技术使得在Java应用程序中处理XML数据变得更加便捷,避免了手动解析和构建XML字符串的繁琐工作。本篇将深入探讨Java中XML数据绑定的...

    Java XML绑定技术 (Castor JAXB XMLBeans)

    Java XML绑定技术(简称XML Binding)是一种能够自动将XML文档映射到Java对象的工具和技术,从而使得开发人员能够更方便地操作XML数据。通过使用这些技术,开发人员可以将复杂的XML文档转换为易于理解和操作的Java...

    Castor的使用,如何将java object转换为xml

    Castor是一个开源的数据绑定框架,它允许Java开发者在Java对象和XML之间进行无缝转换。这个强大的工具能够将复杂的Java对象模型映射到XML文档,同时也能够将XML数据解析回等效的Java对象,极大地简化了Java应用中的...

    castor插件java对象和XML自动绑定maping文件生成和java对象一键生成工具

    Castor是一款强大的Java库,它提供了Java对象到XML数据的自动转换功能,反之亦然。这个插件的主要目的是简化XML处理,特别是在Java应用程序中。它通过创建映射文件(Mapping Files)来定义Java对象和XML元素之间的...

    将Java对象和XML自动绑定的Castor1.3API

    Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。...它可以在Java对象、XML文本、SQL数据表以及LDAP目录之间绑定。

    xml和java绑定

    8. **数据绑定框架**: 除了JAXB,还有其他的数据绑定框架,比如Castor, JiBX, XMLBeans等,它们提供了类似的XML到Java对象的映射功能,但可能具有不同的特性和使用方式。 9. **性能优化**: 在大量XML处理时,理解并...

    castor插件java对象和XML自动绑定maping文件生成和java对象一键生成工具1.2

    5. 在Java代码中使用Castor库,根据映射文件将XML数据反序列化为Java对象,或者将Java对象序列化为XML数据。 6. 编写并运行测试用例,确保数据转换的正确性。 总之,"castor插件java对象和XML自动绑定mapping文件...

    XML数据绑定【castor】

    博客链接提到的是iteye上的一篇关于Castor的博客文章,可能详细介绍了如何使用Castor进行XML数据绑定,包括安装、配置、映射文件的创建以及示例代码等。 在实际应用中,使用Castor通常涉及以下步骤: 1. **安装与...

    实现Castor数据绑定,第4部分把Java对象绑定到SQL数据库.pdf

    使用Castor进行SQL数据绑定,开发者需要配置映射文件,该文件定义了Java类与数据库表之间的关系。例如,一个Java对象可能对应数据库中的一个表,对象的属性对应表的列。映射文件可以处理一对一、一对多、多对一和多...

    castor1.4 xsd生成java

    - 使用生成的Java类:现在可以使用这些Java类来读写XML数据,Castor会自动处理对象到XML的序列化和反序列化。 5. **Castor的优势**: - 灵活性:Castor允许自定义映射规则,以适应复杂的数据结构和需求。 - 性能...

    实现 Castor 数据绑定,第 4 部分 把 Java 对象绑定到 SQL 数据库.docx

    Castor 是一个强大的数据绑定框架,它不仅支持Java对象与XML文档之间的转换,还支持将Java对象绑定到SQL数据库。本文主要探讨了如何利用Castor实现SQL数据绑定,这一特性使得开发者可以更方便地处理Java对象与SQL...

    castor :Java与xml互转示例---代码

    本文将深入探讨如何使用Castor在Java和XML之间进行互转,并通过代码示例来阐述其工作原理。 ### 1. Castor简介 Castor是基于Java的,它通过生成Java类来解析XML文档,或者将Java对象转换为XML。它的核心功能包括:...

    castor解析xml与xsd校验xml

    2. **创建Java对象**:在使用Castor解析XML之前,你需要创建与XML文档结构相对应的Java类。这些类通常包含属性,它们对应于XML元素,而getters和setters则对应于元素的开始和结束标签。 3. **绑定映射文件**:创建...

    xml的一个解析工具castor

    Castor是一个强大的Java库,主要用于XML到对象绑定和对象到XML的数据转换。它提供了一种简单的方法来将复杂的XML文档映射为Java对象,并且能够反向操作,将Java对象序列化为XML格式。这个工具在处理XML数据时极大地...

    castor 学习文档英文原版

    文档的1.1.1节到1.1.6节涵盖了Castor XML的数据绑定框架的基本概念,例如框架的引入、使用现有类/对象进行映射、类描述符的使用以及XML上下文的创建方法。框架提供了将XML文档中的数据映射到Java对象和从Java对象...

    xml与java对象映射

    Java作为一种强大的编程语言,经常需要与XML进行交互,以便在程序中处理XML数据。本篇文章将深入探讨XML与Java对象之间的映射机制,以及如何在实际开发中实现这种映射。 1. **Java对象到XML的转换** - **JAXB...

Global site tag (gtag.js) - Google Analytics