Castor用法
http://backhome.iteye.com/blog/582459
http://fyd222.iteye.com/blog/1397761
http://kuwoleft.iteye.com/blog/1242249
依赖包:
castor-1.3.2-xml.jar
castor-1.3.2-core.jar
commons-lang-2.1.0.jar
commons-logging-1.1.jar
javax.xml.stream-1.0.1.jar
JavaBean
Person.java
Java代码
package bean;
import java.io.Serializable;
import java.util.Date;
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name = null;
private Date dob = null;
public Person() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
@Override
public String toString() {
return "Person [dob=" + dob + ", name=" + name + "]";
}
}
package bean;
import java.io.Serializable;
import java.util.Date;
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name = null;
private Date dob = null;
public Person() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
@Override
public String toString() {
return "Person [dob=" + dob + ", name=" + name + "]";
}
}
Staff.java
Java代码
package bean;
import java.io.Serializable;
import java.util.List;
public class Staff implements Serializable{
private static final long serialVersionUID = 1L;
private String deptNO;
private List<Person> persons;
public String getDeptNO() {
return deptNO;
}
public void setDeptNO(String deptNO) {
this.deptNO = deptNO;
}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
@Override
public String toString() {
return "Staff [deptNO=" + deptNO + ", persons=" + persons + "]";
}
}
package bean;
import java.io.Serializable;
import java.util.List;
public class Staff implements Serializable{
private static final long serialVersionUID = 1L;
private String deptNO;
private List<Person> persons;
public String getDeptNO() {
return deptNO;
}
public void setDeptNO(String deptNO) {
this.deptNO = deptNO;
}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
@Override
public String toString() {
return "Staff [deptNO=" + deptNO + ", persons=" + persons + "]";
}
}
XML映射文件
maping.xml
Xml代码
<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.org/mapping.dtd">
<mapping>
<description>Basic mapping example</description>
<class name="bean.Staff">
<map-to xml="Staff" />
<field name="deptNO">
<bind-xml name="deptNO" node="attribute" />
</field>
<field name="persons" type="bean.Person" collection="arraylist">
<bind-xml name="Person" />
</field>
</class>
<class name="bean.Person">
<field name="name">
<bind-xml name="name" node="attribute" />
</field>
<field name="dob">
<bind-xml name="birthday" node="attribute" />
</field>
</class>
</mapping>
<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.org/mapping.dtd">
<mapping>
<description>Basic mapping example</description>
<class name="bean.Staff">
<map-to xml="Staff" />
<field name="deptNO">
<bind-xml name="deptNO" node="attribute" />
</field>
<field name="persons" type="bean.Person" collection="arraylist">
<bind-xml name="Person" />
</field>
</class>
<class name="bean.Person">
<field name="name">
<bind-xml name="name" node="attribute" />
</field>
<field name="dob">
<bind-xml name="birthday" node="attribute" />
</field>
</class>
</mapping>
JavaBeanToXml.java
Java代码
package Trans;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Date;
import org.exolab.castor.mapping.Mapping;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.XMLContext;
import bean.Person;
import bean.Staff;
public class JavaBeanToXml {
public static void main(String[] args) {
Staff staff = new Staff();
staff.setDeptNO("MNN1");
Person p1 =new Person();
p1.setName("田中一郎");
p1.setDob(new Date());
Person p2 =new Person();
p2.setName("田中 二郎");
p2.setDob(new Date());
ArrayList<Person> pers =new ArrayList<Person>();
pers.add(p1);
pers.add(p2);
staff.setPersons(pers);
javaBeanToXml("D:\\fsdev\\workspace\\JavaBeanToXML\\src\\Trans\\maping.xml","C:\\Staff.xml",staff);
}
private static void javaBeanToXml(String mapingFile, String destFile, Staff staff) {
Mapping mapping = new Mapping();
try {
mapping.loadMapping(mapingFile);
XMLContext context = new XMLContext();
context.addMapping(mapping);
Marshaller marshaller = context.createMarshaller();
marshaller.setWriter(new OutputStreamWriter(new FileOutputStream(new File(destFile))));
marshaller.marshal(staff);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package Trans;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Date;
import org.exolab.castor.mapping.Mapping;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.XMLContext;
import bean.Person;
import bean.Staff;
public class JavaBeanToXml {
public static void main(String[] args) {
Staff staff = new Staff();
staff.setDeptNO("MNN1");
Person p1 =new Person();
p1.setName("田中一郎");
p1.setDob(new Date());
Person p2 =new Person();
p2.setName("田中 二郎");
p2.setDob(new Date());
ArrayList<Person> pers =new ArrayList<Person>();
pers.add(p1);
pers.add(p2);
staff.setPersons(pers);
javaBeanToXml("D:\\fsdev\\workspace\\JavaBeanToXML\\src\\Trans\\maping.xml","C:\\Staff.xml",staff);
}
private static void javaBeanToXml(String mapingFile, String destFile, Staff staff) {
Mapping mapping = new Mapping();
try {
mapping.loadMapping(mapingFile);
XMLContext context = new XMLContext();
context.addMapping(mapping);
Marshaller marshaller = context.createMarshaller();
marshaller.setWriter(new OutputStreamWriter(new FileOutputStream(new File(destFile))));
marshaller.marshal(staff);
} catch (Exception e) {
e.printStackTrace();
}
}
}
XMLJavaToBean.java
package Trans;
Java代码
import java.io.FileReader;
import org.exolab.castor.mapping.Mapping;
import org.exolab.castor.xml.Unmarshaller;
import org.exolab.castor.xml.XMLContext;
import bean.Staff;
public class XMLJavaToBean {
public static void main(String[] args) {
Staff staff = xmlToJavaBean("D:\\fsdev\\workspace\\JavaBeanToXML\\src\\Trans\\maping.xml","C:\\Staff.xml");
System.out.println(staff);
}
private static Staff xmlToJavaBean(String mapingFile, String xmlFile) {
Mapping mapping = new Mapping();
try {
mapping.loadMapping(mapingFile);
XMLContext context = new XMLContext();
context.addMapping(mapping);
Unmarshaller unmarshaller = context.createUnmarshaller();
unmarshaller.setClass(Staff.class);
FileReader reader = new FileReader(xmlFile);
return (Staff)unmarshaller.unmarshal(reader);
} catch (Exception e) {
e.printStackTrace();
}
return new Staff();
}
}
分享到:
相关推荐
**三、XML转换为Java对象** 1. **反序列化**:当需要从XML恢复Java对象时,可以使用`Unmarshaller`类。同样,这需要映射文件来指导解析过程。例如: ```java Unmarshaller unmarshaller = new Unmarshaller...
3. **Java对象的序列化与反序列化**:调用Castor提供的API,实现XML与Java对象之间的转换。 例如,如果你有一个`User`类,一个对应的XML结构,以及一个映射文件,你可以通过以下方式使用Castor: ```java import ...
Castor是一个开源的Java库,它提供了一个强大的框架,用于在Java对象和XML文档之间进行映射和转换。这个库的使用使得数据序列化和反序列化变得简单,尤其是在处理复杂的对象模型时。本文将深入探讨如何使用Castor在...
Castor 提供了一个灵活的方式来定义 Java 对象与 XML 之间的映射关系,使得开发者们可以轻松地将 Java 对象转换为 XML,并在需要时将 XML 转换回 Java 对象。 Castor 的工作流程可以分为三步: 1. 首先,需要定义...
提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。 Castor(http://castor.exolab.org/)是一种将Java对象和XML自动绑定的开源软件。它可以在Java对象、XML文本、SQL数据表以及LDAP目录...
通过这个映射文件,Castor可以知道如何在Java对象和XML文档之间进行转换。映射文件的生成通常需要手动编写,但描述中的工具能够根据给定的XML报文自动生成这些映射文件,大大提高了开发效率。 "java对象一键生成...
1. Java对象到XML转换: - **JAXB (Java Architecture for XML Binding)**:这是Java的标准API,用于在Java对象和XML之间进行映射。JAXB提供了一种自动化的机制,可以将Java类直接转换为XML文档,反之亦然。通过...
Castor是Java中的一款开源工具,它主要用于XML到Java对象的映射,以及Java对象到XML的转换。在XML Schema(XSD)广泛应用于定义XML数据结构的今天,Castor提供了一个方便的方法,将XSD文件自动转化为Java类,使得...
利用这些资源,开发者可以快速地集成Castor到他们的项目中,实现XML数据与Java对象之间的无缝转换。总的来说,Castor是一个强大的工具,对于需要频繁处理XML数据的Java应用来说,它能够极大地提高开发效率和代码的可...
它是Java EE标准的一部分,提供了一种机制来将Java对象与XML文档相互转换。使用JAXB,可以通过简单的API调用来序列化和反序列化Java对象为XML文档,反之亦然。 **特点:** - **简单易用**:只需在Java类上添加一些...
4. **解析XML到Java对象**:使用`Unmarshaller`接口实例化的对象,调用`unmarshal()`方法,传入XML文件或输入流,即可将XML转换为Java对象。例如: ```java File xmlFile = new File("path/to/xml/file.xml"); ...
要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。它支持分布式目录事务处理和时间;提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。
例如,在SOAP Web服务中,JAXB常用于XML报文与Java对象的转换。 总之,Java与XML数据绑定是现代软件开发中的重要技能,它简化了XML处理,提高了代码的可读性和维护性。掌握JAXB和其他数据绑定技术,有助于开发者更...
xml报文和java对象互相转换 相关jar包和测试代码,可以与castor插件java对象和XML自动绑定maping文件生成和java对象一键生成工具1.2(https://download.csdn.net/download/kemoing/10864595)完美配合使用
2. Bean到XML转换: 反之,如果你有一个Java对象并且希望将其转换为XML格式,Castor也能轻松实现。通过调用Castor提供的序列化方法,你可以将Java对象转换为XML字符串或直接写入XML文件。这样,Java对象的数据就以...
castor-0.9.5.3-xml.jar,java和xml互相转换所使用的JAR
Castor是一种开源的数据绑定框架,它允许在Java对象和XML之间进行双向转换。这个框架的主要目的是简化数据交换,使得开发者可以轻松地将Java对象序列化为XML,或者将XML反序列化为Java对象。这对于处理XML数据,如...
Castor是一个强大的Java库,主要用于XML到对象绑定和对象到XML的数据转换。它提供了一种简单的方法来将复杂的XML文档映射为Java对象,并且能够反向操作,将Java对象序列化为XML格式。这个工具在处理XML数据时极大地...
Castor是一个Java库,它允许开发人员将XML文档和Java对象之间进行映射,从而实现数据的序列化和反序列化。这种功能对于数据交换、持久化或配置管理等场景非常有用。在本篇博文中,我们可能讨论的是如何自定义这些...
总之,Castor框架是Java开发者处理XML数据的一个强大工具,它通过数据绑定简化了XML与Java对象之间的转换,减少了编程复杂性,提高了效率。对于那些主要关心XML数据内容而非其结构的项目,采用Castor进行数据绑定是...