bean
package ex1;
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) {
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;
}
test类:
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() {
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());
System.err.println(e.getMessage());
生成的xml文件如下:
foo.xml
<?xml version="1.0" encoding="GBK"?>
<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>
<key xsi:type="java:java.lang.String">b</key>
<value xsi:type="java:java.lang.String">bbb</value>
<adds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://java.sun.com"
xsi:type="java:java.lang.String">zhengzhou
</adds>
xsi:type="java:java.lang.String">xian
</foo>
运行反解组测试方法:
log4j:WARN No appenders could be found for logger (org.castor.core.util.AbstractProperties).
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
红色部分是有效输出!
虽然格式还不够美观,但已经感受到了Castor的强大功能!
这个例子不够完美,xml还没格式化,输出了一些类参数信息,显得不够专业。以后再研究研究。
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/307808,如需转载请自行联系原作者