Castor是一个开源的XML数据绑定java组件工具,在XML数据交换方面很有用。
http://www.ibm.com/developerworks/cn/xml/x-bindcastor/
http://www.ibm.com/developerworks/cn/xml/x-xjavacastor1/
http://www.ibm.com/developerworks/cn/xml/x-xjavacastor2/
http://www.ibm.com/developerworks/cn/xml/x-pracdb1.html
import java.io.Serializable;
import java.util.*;
public class Foo implements Serializable {
private String name;
private Date birthday = new Date();
private List adds = new ArrayList(0);
private Map map = new HashMap(0);
public Foo() {
}
public Foo(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public List getAdds() {
return adds;
}
public void setAdds(List adds) {
this.adds = adds;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
}
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.Unmarshaller;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Map;
public class MarshalTester {
public static void main(String[] args) {
testMarshaller();
testUnMarshaller();
}
/**
* java->XML
*/
public static void testMarshaller() {
try {
Foo f = new Foo("foo");
f.getAdds().add("zhengzhou");
f.getAdds().add("xian");
f.getMap().put("a", "aaa");
f.getMap().put("b", "bbb");
FileWriter writer = new FileWriter("foo.xml");
Marshaller marshaller = new Marshaller(writer);
marshaller.setEncoding("GBK");
marshaller.marshal(f);
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
/**
* XML->java
*/
public static void testUnMarshaller() {
try {
FileReader reader = new FileReader("D:\\teststu\\testcastor\\foo.xml");
Foo foo = (Foo) Unmarshaller.unmarshal(Foo.class, reader);
System.out.println("Name: " + foo.getName());
System.out.println("Birthday: " + foo.getBirthday());
for (Object s : foo.getAdds()) {
System.out.println("Add: " + s.toString());
}
for (Object o : foo.getMap().entrySet()) {
Map.Entry e = (Map.Entry) o;
System.out.println("Map: " + e.getKey() + "--" + e.getValue());
}
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace(System.err);
}
}
}
<foo>
<name>foo</name>
<birthday>2010-04-30T18:01:59.375+08:00</birthday>
<map xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://java.sun.com"
xsi:type="java:org.exolab.castor.mapping.MapItem">
<key xsi:type="java:java.lang.String">a</key>
<value xsi:type="java:java.lang.String">aaa</value>
</map>
<map xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://java.sun.com"
xsi:type="java:org.exolab.castor.mapping.MapItem">
<key xsi:type="java:java.lang.String">b</key>
<value xsi:type="java:java.lang.String">bbb</value>
</map>
<adds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://java.sun.com"
xsi:type="java:java.lang.String">zhengzhou
</adds>
<adds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://java.sun.com"
xsi:type="java:java.lang.String">xian
</adds>
</foo>
log4j:WARN Please initialize the log4j system properly.
Name: foo
Birthday: Fri Apr 30 18:01:59 CST 2010
Add: zhengzhou
Add: xian
Map: a--aaa
Map: b--bbb
Process finished with exit code 0