zoukankan      html  css  js  c++  java
  • Castor的使用

    因为项目中使用了Castor(xml和对象间的转换),所以自己在网上找了一些资料练习了一下,现在把代码贴出来,留着以后看看!

    这是用到的jar包,有一些是没用的!这都是在网上看的

    一、(没有配置文件)

     1 public class DefaultCastor
     2 {
     3     //返回此抽象路径的绝对路径字符串
     4     public static final String xmlPath=new File("").getAbsolutePath()+"\src\CastorTest\";
     5     
     6     @org.junit.Test
     7     public void Test(){
     8 //        DefaultCastor test=new DefaultCastor();
     9         try
    10         {
    11             beanToxml();
    12             xmlTobean();
    13         } catch (MarshalException e)
    14         {
    15             // TODO Auto-generated catch block
    16             e.printStackTrace();
    17         } catch (ValidationException e)
    18         {
    19             // TODO Auto-generated catch block
    20             e.printStackTrace();
    21         } catch (IOException e)
    22         {
    23             // TODO Auto-generated catch block
    24             e.printStackTrace();
    25         }
    26     }
    27     /**
    28      * 缺省用法没有配置文件
    29      * 编组(marshalling)
    30      * @throws IOException 
    31      * @throws ValidationException 
    32      * @throws MarshalException 
    33      */
    34     @SuppressWarnings({ "unchecked", "rawtypes" })
    35     public static void beanToxml() throws IOException, MarshalException, ValidationException{
    36         System.out.println(xmlPath+"路径------");
    37         List friend=new ArrayList();
    38         friend.add("zhangsan");
    39         friend.add("lisi");
    40         Map score=new HashMap();
    41         score.put("1", "za");
    42         score.put("2", "na");
    43         String[] hobby={"a","b"};
    44         UserBean user=new UserBean();
    45         user.setName("fenghao");
    46         user.setAge("24");
    47          user.setFriends(friend);
    48         user.setHobby(hobby);
    49         user.setScore(score);
    50         File file=new File(xmlPath+"test.xml");
    51         Writer writer=new FileWriter(file);
    52         Marshaller shaller=new Marshaller(writer);
    53         shaller.setEncoding("utf-8");
    54         shaller.marshal(user);
    55         writer.flush();
    56         writer.close();
    57     } 
    58     /**
    59      * xml转成Bean
    60      * 解组
    61      * @throws FileNotFoundException 
    62      * @throws ValidationException 
    63      * @throws MarshalException 
    64      */
    65     public static void xmlTobean() throws FileNotFoundException, MarshalException, ValidationException{
    66         File file=new File(xmlPath+"test.xml");
    67         System.out.println(file.getAbsolutePath()+"文件路径");
    68         Reader read=new FileReader(file);
    69 //        InputStream in=new FileInputStream(file);
    70         UserBean user=(UserBean)Unmarshaller.unmarshal(UserBean.class, read);
    71         System.out.println("--------------/n");
    72         System.out.println(user.getName()+"-------name/n"+user.getScore().get("1"));
    73         System.out.println("---------------");
    74         try
    75         {
    76             read.close();
    77         } catch (IOException e)
    78         {
    79             // TODO Auto-generated catch block
    80             e.printStackTrace();
    81         }
    82         
    83     }
    84     
    85 }

    二、

    这是实体类

     1 package CastorTest;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 import java.util.Map;
     6 
     7 public class UserBean
     8 {
     9      private String name;
    10      private String age;
    11      private String[] hobby;
    12      private Map score;
    13      private List<String> friends;
    14     public String getName()
    15     {
    16         return name;
    17     }
    18     public void setName(String name)
    19     {
    20         this.name = name;
    21     }
    22     public String getAge()
    23     {
    24         return age;
    25     }
    26     public void setAge(String age)
    27     {
    28         this.age = age;
    29     }
    30     public String[] getHobby()
    31     {
    32         return hobby;
    33     }
    34     public void setHobby(String[] hobby)
    35     {
    36         this.hobby = hobby;
    37     }
    38     public Map getScore()
    39     {
    40         return score;
    41     }
    42     public void setScore(Map score)
    43     {
    44         this.score = score;
    45     }
    46     public List<String> getFriends()
    47     {
    48         return friends;
    49     }
    50     public void setFriends(List<String> friends)
    51     {
    52         this.friends = friends;
    53     }
    54     public UserBean(String name, String age, String[] hobby, Map score,
    55             List<String> friends)
    56     {
    57         super();
    58         this.name = name;
    59         this.age = age;
    60         this.hobby = hobby;
    61         this.score = score;
    62         this.friends = new ArrayList<String>();
    63     }
    64     public UserBean()
    65     {
    66         super();
    67         // TODO Auto-generated constructor stub
    68     }
    69     
    70      
    71 }

     1 package CastorTest;
     2 //这是工具类
     3 import java.io.BufferedReader;
     4 import java.io.File;
     5 import java.io.FileInputStream;
     6 import java.io.FileNotFoundException;
     7 import java.io.IOException;
     8 import java.io.InputStream;
     9 import java.io.InputStreamReader;
    10 
    11 
    12 public class FileUtil
    13 {
    14     public static String  readFile(String filePath) throws IOException{
    15         File file=new File(filePath);
    16         BufferedReader read=new BufferedReader(new InputStreamReader(new FileInputStream(file),"utf-8"));
    17         StringBuffer str=new StringBuffer((int)file.length()+300);//细节性优化方案
    18         String line=null;
    19         while((line=read.readLine())!=null){
    20             str.append(line);
    21         }
    22         read.close();
    23         return str.toString();
    24     }
    25     public static String readFile1(String filePath) throws IOException{
    26         File file=new File(filePath);
    27         InputStream in=null;
    28         in=new FileInputStream(file);
    29         byte b[]=new byte[(int)file.length()];//细节性优化方案
    30         int len=in.read(b);
    31         in.close();
    32         String str=new String(b,0,len);
    33         return str;
    34     }
    35 }

    这是映射文件(描述xml和Bean的关系)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">
    <mapping>
        <class name="CastorTest.UserBean" auto-complete="true">
           <map-to xml="dataset"/>
           <field name="name" type="java.lang.String">
              <bind-xml name="name" node="element"/>
           </field>
           <field name="age" type="java.lang.String">
             <bind-xml name="age" node="element"/>
           </field>
           <field name="hobby" type="java.lang.String" collection="array">
              <bind-xml name="hobby" node="element"/>
           </field>
           <field name="score" collection="map">
                <class name="org.exolab.castor.mapping.MapItem">
                  <field name="key" type="java.lang.String">
                     <bind-xml name="key" node="attribute"/>
                  </field>
                  <field name="value" type="java.lang.String">
                     <bind-xml name="value" node="text"/>
                  </field>
                </class>
           </field>
           <field name="friends"  collection="arraylist" type="java.lang.String">
              <bind-xml name="friends" node="element"/>
           </field>
        </class>
    </mapping>

    这是运行代码:

      1 package CastorTest;
      2 
      3 
      4 
      5 import java.io.File;
      6 import java.io.FileNotFoundException;
      7 import java.io.FileReader;
      8 import java.io.FileWriter;
      9 import java.io.IOException;
     10 import java.io.Reader;
     11 import java.io.StringReader;
     12 import java.io.Writer;
     13 import java.util.ArrayList;
     14 import java.util.HashMap;
     15 import java.util.List;
     16 import java.util.Map;
     17 
     18 import org.exolab.castor.mapping.Mapping;
     19 import org.exolab.castor.mapping.MappingException;
     20 import org.exolab.castor.xml.MarshalException;
     21 import org.exolab.castor.xml.Marshaller;
     22 import org.exolab.castor.xml.Unmarshaller;
     23 import org.exolab.castor.xml.ValidationException;
     24 /**
     25  * 使用配置文件进行javaBean和xml的转化
     26  * @author issuser
     27  *
     28  */
     29 public class CastorUtil
     30 {
     31     private static final String filePath=new File("").getAbsolutePath()+"\src\CastorTest\";
     32     private static Mapping loadMapping(){
     33         Mapping mapping=new Mapping();
     34         try
     35         {
     36             mapping.loadMapping(filePath+"Mapping.xml");
     37         } catch (IOException e)
     38         {
     39             // TODO Auto-generated catch block
     40             e.printStackTrace();
     41         } catch (MappingException e)
     42         {
     43             // TODO Auto-generated catch block
     44             e.printStackTrace();
     45         }
     46         return mapping;
     47     }
     48     @org.junit.Test
     49      public void Test(){
     50          CastorUtil test=new CastorUtil();
     51          try
     52         {
     53 //            test.beanToXml();
     54             test.readXmlToBean();
     55         } catch (MarshalException e)
     56         {
     57             // TODO Auto-generated catch block
     58             e.printStackTrace();
     59         } catch (ValidationException e)
     60         {
     61             // TODO Auto-generated catch block
     62             e.printStackTrace();
     63         } catch (IOException e)
     64         {
     65             // TODO Auto-generated catch block
     66             e.printStackTrace();
     67         } catch (MappingException e)
     68         {
     69             // TODO Auto-generated catch block
     70             e.printStackTrace();
     71         }
     72      }
     73     @SuppressWarnings("unchecked")
     74     public void beanToXml() throws IOException, MarshalException, ValidationException, MappingException{
     75         List friend=new ArrayList();
     76         friend.add("zhangsan");
     77         friend.add("lisi");
     78         Map score=new HashMap();
     79         score.put("1", "za");
     80         score.put("2", "na");
     81         String[] hobby={"a","b"};
     82         UserBean user=new UserBean();
     83         user.setName("fenghao");
     84         user.setAge("24");
     85          user.setFriends(friend);
     86         user.setHobby(hobby);
     87         user.setScore(score);
     88         
     89         File file=new File(filePath+"test.xml");
     90         Writer writer=new FileWriter(file);
     91         Marshaller shaller=new Marshaller(writer);
     92         shaller.setEncoding("utf-8");
     93         shaller.setMapping(CastorUtil.loadMapping());
     94         shaller.marshal(user);
     95         writer.flush();
     96         writer.close();
     97         
     98     } 
     99     public void readXmlToBean() throws MappingException, IOException, MarshalException, ValidationException{
    100         String xmlString=FileUtil.readFile1(filePath+"test.xml");
    101         Reader read=new StringReader(xmlString);
    102         Unmarshaller unshaller=new Unmarshaller(UserBean.class);
    103         unshaller.setMapping(CastorUtil.loadMapping());
    104         UserBean user=(UserBean)unshaller.unmarshal(read);
    105         System.out.println(user.getName()+"--name--"+user.getAge()+"--age--");
    106         read.close();
    107     }
    108 }
  • 相关阅读:
    requirejs官网
    【PC端】jQuery+PHP实现浏览更多内容(jquery.more.js插件)
    自学Zabbix4.0之路
    自学Python-socket基础
    自学Aruba集锦
    自学zabbix集锦
    自学工业控制网络之路
    自学Linux命令行与Shell脚本之路
    自学Aruba之路
    自学Zabbix之路
  • 原文地址:https://www.cnblogs.com/nihaofenghao/p/5431034.html
Copyright © 2011-2022 走看看