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
castor解析xml与xsd校验xml
castor Java与xml互转示例---代码 castor xml解析
Castor实现XML与Java的互转,是目前非常流行的WSDL中常用的方法。有兴趣的可以下载看看
Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定
根据xml报文,一键自动生成castor插件maping文件和java对象,方便接口对接以及测试工具包测试说明文档
Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/... Castor(http://castor.exolab.org/)是一种将Java对象和XML自动绑定的开源软件。它可以在Java对象、XML文本、SQL数据表以及LDAP目录之间绑定。
解析wsdl文件的好帮手,和jdom.jar,wsdl4j.jar组合,能很好的解吸wsdl文件。
castor-1.3.1-examples.zip castor样例 castor样例xml to bean和bean to xml样例
是个不错的XML解析工具。 1、xml格式文件的用法,我们学过的xml有两种用法:一,作为配置文件。二、作为数据存储文件。...2、这个工具的功能:能够把xml文件存储的数据和pojo对象进行映射。我们暂且把这种叫做:OXM。
Unmarshall与Marshall使用的castor-xml-1.3.2.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...
根据xml报文,一键自动生成castor插件maping文件和java对象
castor castor资料 castor castor castor
jar包,官方版本,自测可用
castor-0.9.5.3-xml.jar,java和xml互相转换所使用的JAR
要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。它支持分布式目录事务处理和时间;提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。
castor是一种将java对象和XML自动绑定的开源软件。它可以在java对象、XML文本、SQL数据表以及LDAP目录之间绑定。Castor几乎是JAXB的替代品。Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/R映射...
castor-1.2 jar包 XML转化的好东东 Castor 项目采用 BSD 类型的证书,因此可在任何类型的应用程序(包括完整版权的项目)中使用。 Castor 实际上仅仅有 XML 数据绑定,它还支持 SQL 和 LDAP 绑定
castor比xstream实现对象与xml之间转化更强大些,利用mapping.xml文件规划,代码中相应工具类已经封装好,包名结构清晰,打入运行test包下java2string.java 和string2java.java可以测试对象之间转化