Castor的简单使用

上一次的Castor是依据项目做的,现在自己做了一个小demo

一、实体类

Data

 1 package com.yj.fenghao.castor;
 2 
 3 public class Data {
 4     
 5     private Head head;
 6     private Row[] row;
 7     public Head getHead() {
 8         return head;
 9     }
10     public void setHead(Head head) {
11         this.head = head;
12     }
13     public Row[] getRow() {
14         return row;
15     }
16     public void setRow(Row[] row) {
17         this.row = row;
18     }
19     public Data(Head head, Row[] row) {
20         super();
21         this.head = head;
22         this.row = row;
23     }
24     public Data() {
25         super();
26         // TODO Auto-generated constructor stub
27     }
28     
29 }

Head

 1 package com.yj.fenghao.castor;
 2 
 3 public class Head {
 4     
 5     private String name;
 6     private String age;
 7     private String sex;
 8     public String getName() {
 9         return name;
10     }
11     public void setName(String name) {
12         this.name = name;
13     }
14     public String getAge() {
15         return age;
16     }
17     public void setAge(String age) {
18         this.age = age;
19     }
20     public String getSex() {
21         return sex;
22     }
23     public void setSex(String sex) {
24         this.sex = sex;
25     }
26     public Head(String name, String age, String sex) {
27         super();
28         this.name = name;
29         this.age = age;
30         this.sex = sex;
31     }
32     public Head() {
33         super();
34         // TODO Auto-generated constructor stub
35     }
36     
37 
38 }

Row

 1 package com.yj.fenghao.castor;
 2 
 3 import java.util.Map;
 4 
 5 public class Row {
 6     
 7     private String contronl;
 8     private Map<String,String> map;
 9     public String getContronl() {
10         return contronl;
11     }
12     public void setContronl(String contronl) {
13         this.contronl = contronl;
14     }
15     public Map<String, String> getMap() {
16         return map;
17     }
18     public void setMap(Map<String, String> map) {
19         this.map = map;
20     }
21     public Row(String contronl, Map<String, String> map) {
22         super();
23         this.contronl = contronl;
24         this.map = map;
25     }
26     public Row() {
27         super();
28         // TODO Auto-generated constructor stub
29     }
30     
31 }

二、下面是映射文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">
 3 <mapping>
 4    <class name="com.yj.fenghao.castor.Data" auto-complete="true">
 5       <map-to xml="data"></map-to>
 6       <field name="head" type="com.yj.fenghao.castor.Head">
 7           <bind-xml name="head" node="element"></bind-xml>
 8       </field>
 9       <field name="row" collection="array" type="com.yj.fenghao.castor.Row">
10           <bind-xml name="row" node="element"></bind-xml>
11       </field>
12    </class>
13    <class name="com.yj.fenghao.castor.Head">
14        <field name="name" type="string">
15           <bind-xml name="name" node="element"></bind-xml>
16        </field>
17        <field name="age" type="string">
18           <bind-xml name="age" node="element"></bind-xml>
19        </field>
20        <field name="sex" type="string">
21           <bind-xml name="sex" node="element"></bind-xml>
22        </field>
23    </class>
24    <class name="com.yj.fenghao.castor.Row">
25        <field name="contronl" type="string">
26           <bind-xml name="contronl" node="element"></bind-xml>
27        </field>
28        <field name="map" collection="map">
29           <bind-xml name="mapitem" location="map" >
30              <class name="org.exolab.castor.mapping.MapItem">
31                  <field name="key" type="string">
32                      <bind-xml name="key" node="attribute"></bind-xml>
33                  </field>
34                  <field name="value" type="string">
35                      <bind-xml name="value" node="text"></bind-xml>
36                  </field>
37              </class>
38           </bind-xml>
39        </field>
40    </class>
41 </mapping> 

三、下面是测试类

 1 package com.yj.fenghao.castor;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.IOException;
 6 import java.io.StringReader;
 7 import java.io.UnsupportedEncodingException;
 8 import java.net.URL;
 9 
10 import com.yj.fenghao.castor.Data;
11 
12 import org.apache.commons.io.IOUtils;
13 import org.exolab.castor.mapping.Mapping;
14 import org.exolab.castor.mapping.MappingException;
15 import org.exolab.castor.xml.MarshalException;
16 import org.exolab.castor.xml.Unmarshaller;
17 import org.exolab.castor.xml.ValidationException;
18 import org.exolab.castor.xml.XMLContext;
19 
20 public class Test {
21     
22     
23     public static final XMLContext xml=new XMLContext();
24     public static final Test test=new Test();
25     public Mapping load(){
26         Mapping load=new Mapping();
27         try {
28             URL resource = Thread.currentThread().getContextClassLoader().getResource("sample_mapping.xml");
29             load.loadMapping(resource.getPath());
30         } catch (IOException e) {
31             e.printStackTrace();
32         } catch (MappingException e) {
33             e.printStackTrace();
34         }
35         return load;
36     }
37     
38     public static void main(String[] args) {
39         Mapping load = test.load();
40         StringReader reader=null;
41         String message=null;
42         try {
43             FileInputStream fis=new FileInputStream("d:/123.xml");
44             message=new String(IOUtils.toByteArray(fis),"utf-8");
45         } catch (FileNotFoundException e1) {
46             e1.printStackTrace();
47         } catch (UnsupportedEncodingException e) {
48             e.printStackTrace();
49         } catch (IOException e) {
50             e.printStackTrace();
51         }
52         try {
53             xml.addMapping(load);
54             Unmarshaller unmar = xml.createUnmarshaller();
55             reader=new StringReader(message);
56             unmar.setClass(Data.class);
57             Data data = (Data)unmar.unmarshal(reader);
58             Head head = data.getHead();
59             System.out.println("\n"+head.getName());
60             System.out.println("\n"+head.getAge());
61             System.out.println("\n"+head.getSex());
62             Row row = data.getRow()[0];
63             System.out.println("\n"+row.getContronl());
64             System.out.println("\n"+row.getMap().get("ce"));
65         } catch (MappingException e) {
66             e.printStackTrace();
67         } catch (MarshalException e) {
68             e.printStackTrace();
69         } catch (ValidationException e) {
70             e.printStackTrace();
71         }finally{
72             if(reader!=null){
73                 reader.close();
74             }
75         }
76         
77     }
78 
79 }

只是简单的xml和实体类的映射进行数据转换

 

转载于:https://www.cnblogs.com/nihaofenghao/p/6473114.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值