Castor实现XML与Java的互转

Castor是一个开源的XML数据绑定java组件工具,在XML数据交换方面很有用。
 
 
 
下面写个简单例子,测试下Castor:
 
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) { 
                 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; 
        } 
}
 
test类:
package ex1; 

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); 
                } 
        } 
}
 
生成的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> 
        <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 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还没格式化,输出了一些类参数信息,显得不够专业。以后再研究研究。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值