• 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("
    "+head.getName());
    60             System.out.println("
    "+head.getAge());
    61             System.out.println("
    "+head.getSex());
    62             Row row = data.getRow()[0];
    63             System.out.println("
    "+row.getContronl());
    64             System.out.println("
    "+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和实体类的映射进行数据转换

  • 相关阅读:
    正则表达式的使用
    代理IP
    搜索Python编程获取相关图书信息
    使用post请求登陆
    使用.NetCore自带的后台作业,出入队简单模拟生产者消费者处理请求响应的数据
    windows下的cmd和powershell修改字体为YaHei Consolas Hybrid
    粤剧名家专辑精选大全集(193CD)
    Power Query常用操作
    Excel 常用函数
    VbenadminApiSelect Invalid prop: type check failed for prop "onUpdate:value". Expected Function, got Array
  • 原文地址:https://www.cnblogs.com/nihaofenghao/p/6473114.html
Copyright © 2020-2023  润新知