`

java与Xml的转换(Castor)

    博客分类:
  • xml
 
阅读更多
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();  
}  
 

分享到:
评论

相关推荐

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

    **三、XML转换为Java对象** 1. **反序列化**:当需要从XML恢复Java对象时,可以使用`Unmarshaller`类。同样,这需要映射文件来指导解析过程。例如: ```java Unmarshaller unmarshaller = new Unmarshaller...

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

    3. **Java对象的序列化与反序列化**:调用Castor提供的API,实现XML与Java对象之间的转换。 例如,如果你有一个`User`类,一个对应的XML结构,以及一个映射文件,你可以通过以下方式使用Castor: ```java import ...

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

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

    java对象与xml间的转换.docx

    Castor 提供了一个灵活的方式来定义 Java 对象与 XML 之间的映射关系,使得开发者们可以轻松地将 Java 对象转换为 XML,并在需要时将 XML 转换回 Java 对象。 Castor 的工作流程可以分为三步: 1. 首先,需要定义...

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

    提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。  Castor(http://castor.exolab.org/)是一种将Java对象和XML自动绑定的开源软件。它可以在Java对象、XML文本、SQL数据表以及LDAP目录...

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

    通过这个映射文件,Castor可以知道如何在Java对象和XML文档之间进行转换。映射文件的生成通常需要手动编写,但描述中的工具能够根据给定的XML报文自动生成这些映射文件,大大提高了开发效率。 "java对象一键生成...

    Java对象与xml转换

    1. Java对象到XML转换: - **JAXB (Java Architecture for XML Binding)**:这是Java的标准API,用于在Java对象和XML之间进行映射。JAXB提供了一种自动化的机制,可以将Java类直接转换为XML文档,反之亦然。通过...

    castor1.4 xsd生成java

    Castor是Java中的一款开源工具,它主要用于XML到Java对象的映射,以及Java对象到XML的转换。在XML Schema(XSD)广泛应用于定义XML数据结构的今天,Castor提供了一个方便的方法,将XSD文件自动转化为Java类,使得...

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

    利用这些资源,开发者可以快速地集成Castor到他们的项目中,实现XML数据与Java对象之间的无缝转换。总的来说,Castor是一个强大的工具,对于需要频繁处理XML数据的Java应用来说,它能够极大地提高开发效率和代码的可...

    Java XML绑定技术 (Castor JAXB XMLBeans)

    它是Java EE标准的一部分,提供了一种机制来将Java对象与XML文档相互转换。使用JAXB,可以通过简单的API调用来序列化和反序列化Java对象为XML文档,反之亦然。 **特点:** - **简单易用**:只需在Java类上添加一些...

    castor解析xml与xsd校验xml

    4. **解析XML到Java对象**:使用`Unmarshaller`接口实例化的对象,调用`unmarshal()`方法,传入XML文件或输入流,即可将XML转换为Java对象。例如: ```java File xmlFile = new File("path/to/xml/file.xml"); ...

    Java 对象XML解析器castor-0.9

    要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。它支持分布式目录事务处理和时间;提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。

    Java与XML数据绑定

    例如,在SOAP Web服务中,JAXB常用于XML报文与Java对象的转换。 总之,Java与XML数据绑定是现代软件开发中的重要技能,它简化了XML处理,提高了代码的可读性和维护性。掌握JAXB和其他数据绑定技术,有助于开发者更...

    xml报文和java对象互相转换 相关jar包和测试代码

    xml报文和java对象互相转换 相关jar包和测试代码,可以与castor插件java对象和XML自动绑定maping文件生成和java对象一键生成工具1.2(https://download.csdn.net/download/kemoing/10864595)完美配合使用

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

    2. Bean到XML转换: 反之,如果你有一个Java对象并且希望将其转换为XML格式,Castor也能轻松实现。通过调用Castor提供的序列化方法,你可以将Java对象转换为XML字符串或直接写入XML文件。这样,Java对象的数据就以...

    castor-0.9.5.3-xml.jar

    castor-0.9.5.3-xml.jar,java和xml互相转换所使用的JAR

    castor castor castor 资料

    Castor是一种开源的数据绑定框架,它允许在Java对象和XML之间进行双向转换。这个框架的主要目的是简化数据交换,使得开发者可以轻松地将Java对象序列化为XML,或者将XML反序列化为Java对象。这对于处理XML数据,如...

    xml的一个解析工具castor

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

    Castor (二) -- 自定义映射

    Castor是一个Java库,它允许开发人员将XML文档和Java对象之间进行映射,从而实现数据的序列化和反序列化。这种功能对于数据交换、持久化或配置管理等场景非常有用。在本篇博文中,我们可能讨论的是如何自定义这些...

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

    总之,Castor框架是Java开发者处理XML数据的一个强大工具,它通过数据绑定简化了XML与Java对象之间的转换,减少了编程复杂性,提高了效率。对于那些主要关心XML数据内容而非其结构的项目,采用Castor进行数据绑定是...

Global site tag (gtag.js) - Google Analytics