`
redwave
  • 浏览: 40510 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Castor 进行 XML 数据绑定

    博客分类:
  • Java
阅读更多

今日看了些Castor方面的文章,对castor有了些了解。把用法写在这里,已备我和他人查用.

What Castor?

Java对象与 XML 文档之间来回转换的简单方法

Castor的优势:

1.Castor 几乎是 JAXB 的替代品.可以轻易地将所有 JAXB 代码转变为 Castor

2.提供了 JDO 功能。JDO 也就是 Java Data Objects,是驱动 Java-to-RDBMS 编组和解组的底层技术

3.在数据绑定领域提供了许多的功能,无需使用模式便可在 Java 和 XML 之间进行转换,提供一种比 JAXB 更易于使用的绑定模式,以及能够对关系数据库和 XML 文档进行编组(marshal)和解组(unmarshal)

 

Castor下载:

Castor1.2 http://dist.codehaus.org/castor/1.2/castor-1.2.zip

Castor依赖项http://dist.codehaus.org/castor/1.2/castor-1.2-src.zip 下载解压后在/lib下

 

简单的例子:

拷贝别人的例子,经过测试通过

1.创建Book类

import java.util.LinkedList;
import java.util.List;

public class Book {
 private String isbn; 
 private String title;

private List authors; //作者类对象

 public Book(String isbn, String title, List authors) {
  this.isbn = isbn;
  this.title = title;
  this.authors = authors;
 }

 public Book(String isbn, String title, Author author) {
  this.isbn = isbn;
  this.title = title;
  this.authors = new LinkedList();
  authors.add(author);
 }

 public String getIsbn() {
  return isbn;
 }

 public void setTitle(String title) {
  this.title = title;
 }

 public String getTitle() {
  return title;
 }

 public void setAuthors(List authors) {
  this.authors = authors;
 }

 public List getAuthors() {
  return authors;
 }

public void addAuthor(Author author) {
  authors.add(author);
 }
}

2.创建作者类

public class Author {

 private String firstName, lastName;

 private int totalSales;

public Author(String firstName, String lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
 }

 public String getFirstName() {
  return firstName;
 }

 public String getLastName() {
  return lastName;
 }

 public void setTotalSales(int totalSales) {
  this.totalSales = totalSales;
 }

 public void addToSales(int additionalSales) {
  this.totalSales += additionalSales;
 }

public int getTotalSales() {
  return totalSales;
}
}

3.创建编组器类

import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;

import org.exolab.castor.xml.Marshaller;

public class BookMarshaller {

 public static void main(String[] args) {
  try {
   Author finder = new Author("Joseph", "Finder");
   Book book = new Book("9780312347482", "Power Play", finder);
   FileWriter writer = new FileWriter("book.xml"); //作者为一人
   Marshaller.marshal(book, writer);

   List book2Authors = new ArrayList();
   book2Authors.add(new Author("Douglas", "Preston"));
   book2Authors.add(new Author("Lincoln", "Child"));
   Book book2 = new Book("9780446618502", "The Book of the Dead",
     book2Authors);//作者为多人
   writer = new FileWriter("book2.xml");
   Marshaller.marshal(book2, writer);

  } catch (Exception e) {
   System.err.println(e.getMessage());
   e.printStackTrace(System.err);
  }
 }
}

 Castor也支持泛型,如果用jdk1.5/1.6开发的话可以在对list<obj>

4.编译并运行后的结果

<?xml version="1.0" encoding="UTF-8"?>
<book><isbn>9780446618502</isbn><title>The Book of the Dead</title>
<author-names xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:type="java:java.lang.String">Douglas Preston</author-names>
<author-names xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:type="java:java.lang.String">Lincoln Child</author-names>
</book>

5.解组图书

public class BookUnmarshaller {

 public static void main(String[] args) {
  try {
   FileReader reader = new FileReader("book.xml");
   Book book = (Book) Unmarshaller.unmarshal(Book.class, reader);
   System.out.println("Book ISBN: " + book.getIsbn());
   System.out.println("Book Title: " + book.getTitle());
   List authors = book.getAuthors();
   for (Iterator i = authors.iterator(); i.hasNext();) {
    Author author = (Author) i.next();
    System.out.println("Author: " + author.getFirstName() + " "
      + author.getLastName());
   }

   System.out.println();

reader = new FileReader("book2.xml");
   book = (Book) Unmarshaller.unmarshal(Book.class, reader);
   System.out.println("Book ISBN: " + book.getIsbn());
   System.out.println("Book Title: " + book.getTitle());
   authors = book.getAuthors();
   for (Iterator i = authors.iterator(); i.hasNext();) {
    Author author = (Author) i.next();
    System.out.println("Author: " + author.getFirstName() + " "
      + author.getLastName());
   }
  } catch (Exception e) {
   System.err.println(e.getMessage());
   e.printStackTrace(System.err);
  }
 }
}

运行后结果

Book ISBN: 9780312347482
Book Title: Power Play
Author: Joseph Finder

Book ISBN: 9780446618502
Book Title: The Book of the Dead
Author: Douglas Preston
Author: Lincoln Child

 

需要注意的:

Book类和Author类必须包含空参数的构造方法,因为Castor 主要通过反射和调用 Class.forName(类名).newInstance() 这样的方法进行解组

分享到:
评论
1 楼 jelver 2009-12-10  
惭愧啊,今天才发现有这么个好东西

相关推荐

    XML数据绑定【castor】

    XML数据绑定技术是一种将...总之,Castor是Java开发者处理XML数据的强大工具,它通过对象-XML绑定简化了数据交换,同时也提供了数据库持久化的能力。了解并掌握Castor的使用,能够提升XML处理的效率和代码的可维护性。

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

    XML与Java技术之间的一种高效交互方式是通过数据绑定来实现的,其中Castor是一个流行的开源框架。数据绑定允许开发者将XML...对于那些主要关心XML数据内容而非其结构的项目,采用Castor进行数据绑定是非常有效的策略。

    castor 学习文档英文原版

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

    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数据绑定

    6. 其他XML数据绑定框架:除了JAXB,还有许多其他的框架如Castor、 JiBX 和Apache XMLBeans等,它们提供了不同的特性和性能优化,开发者可以根据项目需求选择合适的框架。 7. 应用场景:XML数据绑定广泛应用于Web...

    castor解析xml与xsd校验xml

    Castor是一个Java库,它提供了一种方便的方式来映射XML数据到Java对象,反之亦然。这个工具在处理XML文档时特别有用,因为它允许开发者通过简单的对象操作来处理复杂的XML结构,而无需直接处理XML语法。本文将深入...

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

    Castor是一款强大的Java库,它提供了Java对象到XML数据的...总的来说,Castor插件提供了一种高效的方法来处理XML数据,通过自动绑定和对象生成,极大地提升了开发效率。在处理大量XML数据时,它是一个非常实用的工具。

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

    总之,"castor插件java对象和XML自动绑定mapping文件生成和java对象一键生成工具1.2"是提升XML处理效率的利器,它简化了Java和XML之间的交互,使得开发过程更为流畅。X2MUTIL可能是该工具包的主程序或执行文件,用于...

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

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

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

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

    castor-1.2-xml-schema castor转化XML需要的jar包

    Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定

    castor样例xml to bean和bean to xml样例

    - 对象关系映射(ORM):虽然Castor最初主要用于XML绑定,但它也可以作为轻量级的ORM工具,将数据库记录映射到Java对象。 - 支持JAXB和JDOM:Castor可以与Java Architecture for XML Binding (JAXB) 和Java ...

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

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

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

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

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

    Castor是一个开源的Java库,它提供了一个强大的框架,用于在Java对象和XML文档之间进行映射和转换。这个库的使用使得数据序列化和反序列化变得简单,尤其是在处理复杂的对象模型时。本文将深入探讨如何使用Castor在...

    castor 框架jar包和src

    - **castor-core.jar**:这是Castor的核心库,包含了用于XML绑定和ORM的主要类和接口。 - **castor-xml.jar**:这个jar包包含XML解析和生成相关的组件,如DOM、SAX和StAX的支持。 - **其他依赖jar**:根据应用...

    xml和java绑定

    JAXB使用注解或XML绑定元数据来定义这种映射。 2. **注解驱动的XML绑定**: 在Java类上使用注解如`@XmlRootElement`, `@XmlElement`, `@XmlAttribute`等,可以告诉JAXB如何将类实例序列化为XML或反序列化回对象。 3...

    《用Castor 处理XML文档》学习笔记

    Castor提供了一个映射机制,允许开发者定义XML元素和Java类之间的关系,这个过程被称为XML绑定。一旦绑定完成,Castor可以自动将XML文档解析为Java对象,反之亦然,极大地简化了数据操作。 1. **安装与配置** 在...

Global site tag (gtag.js) - Google Analytics