`
wen866595
  • 浏览: 268422 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Castor XML 简介和内省模式

    博客分类:
  • XML
阅读更多
Castor XML是一个数据绑定框架,用于把Java 对象编组到XML或从XML解组数据生成Java 对象。与DOM和SAX不同的是,这两者的关注点是XML文档的结构,而Castor XML关注的XML文档里的数据。Castor XML 处理数据绑定有三种方式:内省模式、映射文件、类描述器模式。

内省模式是最简单的方式。Castor XML 使用Java 的反射机制和默认的命名规则来处理XML文档里属性、元素与Java 类、属性之间的绑定关系。

内省模式主要使用org.exolab.castor.xml.Marshaller和 org.exolab.castor.xml.Unmarshaller的静态方法来编组和解组。

下面是一个要编组和解组的Java 类:
@SuppressWarnings("unchecked")
public class CD {
	private String name = null;
	private String artist = null;
	private List tracks = null;

	public CD() {
		super();
	}

	public CD(String name, String artist) {
		super();
		this.name = name;
		this.artist = artist;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setArtist(String artist) {
		this.artist = artist;
	}

	public String getArtist() {
		return artist;
	}

	public void setTracks(List tracks) {
		this.tracks = tracks;
	}

	public List getTracks() {
		return tracks;
	}

	public void addTrack(String trackName) {
		if (tracks == null) {
			tracks = new ArrayList();
		}
		tracks.add(trackName);
	}
}


下面是一个编组到XML的代码:
public class IntrospectMarshaller {
	public static void main(String[] args) {
		try {
			CD sessions = new CD("Sessions for Robert J", "Eric Clapton");
			sessions.addTrack("Little Queen of Spades");
			sessions.addTrack("Terraplane Blues");

			FileWriter writer = new FileWriter("cds.xml");
			Marshaller.marshal(sessions, writer);
		} catch (Exception e) {
			System.err.println(e.getMessage());
			e.printStackTrace(System.err);
		}
	}
}


编组生成的XML文档:
<?xml version="1.0" encoding="UTF-8"?>
<CD>
	<artist>Eric Clapton</artist>
	<name>Sessions for Robert J</name>
	<tracks xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:type="java:java.lang.String">Little Queen of Spades</tracks>
	<tracks xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:type="java:java.lang.String">Terraplane Blues</tracks>
</CD>


从生成的XML文档解组,生成Java 对象的代码:
public class IntrospectUnmarshaller {
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		try {
			FileReader reader = new FileReader("cds.xml");
			CD cd = (CD) Unmarshaller.unmarshal(CD.class, reader);
			System.out.println("CD title: " + cd.getName());
			System.out.println("CD artist: " + cd.getArtist());
			List tracks = cd.getTracks();
			if (tracks == null) {
				System.out.println("No tracks.");
			} else {
				for (Iterator i = tracks.iterator(); i.hasNext();) {
					System.out.println("Track: " + i.next());
				}
			}
		} catch (Exception e) {
			System.err.println(e.getMessage());
			e.printStackTrace(System.err);
		}
	}
}

结果输出:
CD title: Sessions for Robert J
CD artist: Eric Clapton
Track: Little Queen of Spades
Track: Terraplane Blues


内省模式的缺点:
1、Java 类及属性与XML文档的元素、属性之间的绑定的命名规则是由Castor XML框架定义的,这是可能改变的,如果改变了,已有代码可能不能运行。
2、如果XML文档的元素、属性名是我们无法控制的,则无法解决。
3、无法解决一个Java 类映射到多个平台的XML文档(每个平台的XML文档都不同)的情况。
分享到:
评论

相关推荐

    castor解析xml与xsd校验xml

    Castor是一个Java库,它提供了一种方便...总结来说,Castor结合XSD提供了强大的XML处理能力,能够简化XML数据的解析和验证,提高数据的准确性和一致性。理解并熟练运用这两个工具,是Java开发中处理XML数据的关键技能。

    castor解析xml

    castor解析xml

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

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

    Castor实现XML与Java的互转

    Castor实现XML与Java的互转,是目前非常流行的WSDL中常用的方法。有兴趣的可以下载看看

    castor-xml-1.3.2.jar

    Unmarshall与Marshall使用的castor-xml-1.3.2.jar包

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

    Castor是一个Java库,它提供了一种将Java对象序列化为XML和反序列化XML回Java对象的能力。这个工具在处理XML数据时非常有用,尤其是当你需要在Java应用程序和XML数据之间建立映射关系时。在Java开发中,XML常用于...

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

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

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

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

    castor 学习文档英文原版

    最后,文档的1.10节提供了一个XML相关的FAQ列表,解答了关于Castor的常见问题,包括XML的内省、映射、序列化、源代码生成等问题。 综上所述,Castor文档涵盖了从基本使用到高级配置再到最佳实践的广泛知识点。它为...

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

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

    castor-0.9.5.3-xml.jar

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

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

    Castor是一个Java库,用于将XML数据映射到Java对象(即bean)和从Java对象反向映射回XML。这个“castor-1.3.1-examples.zip”文件包含了一些示例,展示了如何使用Castor进行XML到Bean以及Bean到XML的转换。这个过程...

    castor1.4 xsd生成java

    1. **Castor框架**:Castor是一个强大的Java库,它允许开发人员通过简单的XML绑定来实现Java对象和XML之间的转换。它支持JAXB不涵盖的一些功能,比如存储过程调用、XML到Java对象的映射以及持久化机制。 2. **XML ...

    castor-1.0-xml.jar

    xml解析工具类,包含了一下的类: org.castor.util.IdentityMap org.castor.util.IdentitySet org.exolab.javasource.JEnum org.exolab.javasource.JType org.exolab.castor.util.List org.exolab.javasource.Header...

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

    Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/... Castor(http://castor.exolab.org/)是一种将Java对象和XML自动绑定的开源软件。它可以在Java对象、XML文本、SQL数据表以及LDAP目录之间绑定。

    castor-xml.jar

    解析wsdl文件的好帮手,和jdom.jar,wsdl4j.jar组合,能很好的解吸wsdl文件。

    castor 框架jar包和src

    Castor框架是一个开源Java库,主要用于XML数据绑定和对象关系映射(ORM)。它提供了一种将XML文档转换为Java对象以及将Java对象序列化为XML的机制,从而简化了XML处理并促进了Java应用程序与XML数据之间的交互。下面...

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

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

    castor castor castor 资料

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

    castor-1.2解析XML

    是个不错的XML解析工具。 1、xml格式文件的用法,我们学过的xml有两种用法:一,作为配置文件。二、作为数据存储文件。...2、这个工具的功能:能够把xml文件存储的数据和pojo对象进行映射。我们暂且把这种叫做:OXM。

Global site tag (gtag.js) - Google Analytics