今日看了些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() 这样的方法进行解组
分享到:
相关推荐
XML数据绑定技术是一种将...总之,Castor是Java开发者处理XML数据的强大工具,它通过对象-XML绑定简化了数据交换,同时也提供了数据库持久化的能力。了解并掌握Castor的使用,能够提升XML处理的效率和代码的可维护性。
XML与Java技术之间的一种高效交互方式是通过数据绑定来实现的,其中Castor是一个流行的开源框架。数据绑定允许开发者将XML...对于那些主要关心XML数据内容而非其结构的项目,采用Castor进行数据绑定是非常有效的策略。
文档的1.1.1节到1.1.6节涵盖了Castor XML的数据绑定框架的基本概念,例如框架的引入、使用现有类/对象进行映射、类描述符的使用以及XML上下文的创建方法。框架提供了将XML文档中的数据映射到Java对象和从Java对象...
在Java中,Castor是一个强大的工具,它提供了XML到Java对象以及Java对象到XML的映射功能,实现了数据绑定,简化了XML的处理。 Castor数据绑定允许开发者将XML文档直接映射为Java对象,反之亦然。这极大地提高了...
Castor是Java中一个强大的数据绑定框架,它允许开发者将XML文档与Java对象之间进行映射,从而实现XML数据的序列化和反序列化。在Java应用开发中,处理XML数据时,通常需要将XML文件内容转换为Java对象,或者将Java...
6. 其他XML数据绑定框架:除了JAXB,还有许多其他的框架如Castor、 JiBX 和Apache XMLBeans等,它们提供了不同的特性和性能优化,开发者可以根据项目需求选择合适的框架。 7. 应用场景:XML数据绑定广泛应用于Web...
Castor是一个Java库,它提供了一种方便的方式来映射XML数据到Java对象,反之亦然。这个工具在处理XML文档时特别有用,因为它允许开发者通过简单的对象操作来处理复杂的XML结构,而无需直接处理XML语法。本文将深入...
Castor是一款强大的Java库,它提供了Java对象到XML数据的...总的来说,Castor插件提供了一种高效的方法来处理XML数据,通过自动绑定和对象生成,极大地提升了开发效率。在处理大量XML数据时,它是一个非常实用的工具。
总之,"castor插件java对象和XML自动绑定mapping文件生成和java对象一键生成工具1.2"是提升XML处理效率的利器,它简化了Java和XML之间的交互,使得开发过程更为流畅。X2MUTIL可能是该工具包的主程序或执行文件,用于...
使用Castor进行SQL数据绑定,开发者需要配置映射文件,该文件定义了Java类与数据库表之间的关系。例如,一个Java对象可能对应数据库中的一个表,对象的属性对应表的列。映射文件可以处理一对一、一对多、多对一和多...
Castor 是一个强大的数据绑定框架,它不仅支持Java对象与XML文档之间的转换,还支持将Java对象绑定到SQL数据库。本文主要探讨了如何利用Castor实现SQL数据绑定,这一特性使得开发者可以更方便地处理Java对象与SQL...
Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定
- 对象关系映射(ORM):虽然Castor最初主要用于XML绑定,但它也可以作为轻量级的ORM工具,将数据库记录映射到Java对象。 - 支持JAXB和JDOM:Castor可以与Java Architecture for XML Binding (JAXB) 和Java ...
Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。...它可以在Java对象、XML文本、SQL数据表以及LDAP目录之间绑定。
Castor是一个开源的数据绑定框架,它允许Java开发者在Java对象和XML之间进行无缝转换。这个强大的工具能够将复杂的Java对象模型映射到XML文档,同时也能够将XML数据解析回等效的Java对象,极大地简化了Java应用中的...
Castor是一个开源的Java库,它提供了一个强大的框架,用于在Java对象和XML文档之间进行映射和转换。这个库的使用使得数据序列化和反序列化变得简单,尤其是在处理复杂的对象模型时。本文将深入探讨如何使用Castor在...
- **castor-core.jar**:这是Castor的核心库,包含了用于XML绑定和ORM的主要类和接口。 - **castor-xml.jar**:这个jar包包含XML解析和生成相关的组件,如DOM、SAX和StAX的支持。 - **其他依赖jar**:根据应用...
JAXB使用注解或XML绑定元数据来定义这种映射。 2. **注解驱动的XML绑定**: 在Java类上使用注解如`@XmlRootElement`, `@XmlElement`, `@XmlAttribute`等,可以告诉JAXB如何将类实例序列化为XML或反序列化回对象。 3...
Castor提供了一个映射机制,允许开发者定义XML元素和Java类之间的关系,这个过程被称为XML绑定。一旦绑定完成,Castor可以自动将XML文档解析为Java对象,反之亦然,极大地简化了数据操作。 1. **安装与配置** 在...