论坛首页 入门技术论坛

Commons Betwixt 五步

浏览 2791 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-21  
稍微复杂一点的应用实例,idf项目所用的xml更为复杂头晕中
java 代码
 
  1. package betwixt;  
  2.   
  3. /** 
  4.  *  
  5.  */  
  6.   
  7. /** 
  8.  * @author huyunan 
  9.  *  
  10.  *  
  11.  * 2007 aspire 
  12.  */  
  13. public class Music  
  14. {  
  15.   
  16.     private String name;  
  17.   
  18.     private String mp3File;  
  19.   
  20.     public Music()  
  21.     {  
  22.   
  23.     }  
  24.   
  25.     /** 
  26.      * @return the name 
  27.      */  
  28.     public String getName()  
  29.     {  
  30.         return this.name;  
  31.     }  
  32.   
  33.     /** 
  34.      * @param name 
  35.      *            the name to set 
  36.      */  
  37.     public void setName(String name)  
  38.     {  
  39.         this.name = name;  
  40.     }  
  41.   
  42.     /** 
  43.      * @return the mp3File 
  44.      */  
  45.     public String getMp3File()  
  46.     {  
  47.         return this.mp3File;  
  48.     }  
  49.   
  50.     /** 
  51.      * @param mp3File 
  52.      *            the mp3File to set 
  53.      */  
  54.     public void setMp3File(String mp3File)  
  55.     {  
  56.         this.mp3File = mp3File;  
  57.     }  
  58.   
  59. }  

java 代码
 
  1. package betwixt;  
  2.   
  3. /** 
  4.  *  
  5.  */  
  6.   
  7. /** 
  8.  * @author huyunan 
  9.  *  
  10.  *  
  11.  * 2007 aspire 
  12.  */  
  13. public class Doc  
  14. {  
  15.   
  16.     private String version;  
  17.   
  18.     private String name;  
  19.   
  20.     private String url;  
  21.   
  22.     public Doc()  
  23.     {  
  24.   
  25.     }  
  26.   
  27.     /** 
  28.      * @return the name 
  29.      */  
  30.     public String getDocName()  
  31.     {  
  32.         return this.name;  
  33.     }  
  34.   
  35.     /** 
  36.      * @param name 
  37.      *            the name to set 
  38.      */  
  39.     public void setName(String name)  
  40.     {  
  41.         this.name = name;  
  42.     }  
  43.   
  44.     /** 
  45.      * @return the url 
  46.      */  
  47.     public String getUrl()  
  48.     {  
  49.         return this.url;  
  50.     }  
  51.   
  52.     /** 
  53.      * @param url 
  54.      *            the url to set 
  55.      */  
  56.     public void setUrl(String url)  
  57.     {  
  58.         this.url = url;  
  59.     }  
  60.   
  61.     /** 
  62.      * @return the version 
  63.      */  
  64.     public String getVersion()  
  65.     {  
  66.         return this.version;  
  67.     }  
  68.   
  69.     /** 
  70.      * @param version 
  71.      *            the version to set 
  72.      */  
  73.     public void setVersion(String version)  
  74.     {  
  75.         this.version = version;  
  76.     }  
  77.   
  78. }  

Doc.betwixt
xml 代码
 
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <info primitiveTypes="element">  
  3.     <element name="docResource">  
  4.         <attribute name="version" property="version" />  
  5.         <element name="contentUrl" property="url" />  
  6.         <addDefaults />  
  7.     </element>  
  8. </info>  

java 代码
 
  1. /** 
  2.  *  
  3.  */  
  4. package betwixt;  
  5.   
  6. import java.util.ArrayList;  
  7. import java.util.HashMap;  
  8. import java.util.List;  
  9. import java.util.Map;  
  10.   
  11. /** 
  12.  * @author huyunan 
  13.  *  
  14.  *  
  15.  * 2007 aspire 
  16.  */  
  17. public class Resource  
  18. {  
  19.   
  20.     private String version;  
  21.   
  22.     private String name;  
  23.   
  24.     private String author;  
  25.   
  26.     private Doc doc;  
  27.   
  28.     private Music music;  
  29.   
  30.     private List<Doc> docList;  
  31.   
  32.     private List<Music> musicList;  
  33.   
  34.     private HashMap<String, Doc> docMap;  
  35.   
  36.     private int docsSize;  
  37.   
  38.     private int musicsSize;  
  39.   
  40.     public Resource()  
  41.     {  
  42.         docList = new ArrayList<Doc>();  
  43.         musicList = new ArrayList<Music>();  
  44.         docMap = new HashMap<String, Doc>();  
  45.     }  
  46.   
  47.     public void addToDocMap(String key, Doc doc)  
  48.     {  
  49.         docMap.put(key, doc);  
  50.     }  
  51.   
  52.     public Map getDocMap()  
  53.     {  
  54.         return docMap;  
  55.     }  
  56.   
  57.     public void addToDocList(Doc doc)  
  58.     {  
  59.         docList.add(doc);  
  60.         docsSize = docList.size();  
  61.     }  
  62.   
  63.     public void addToMusicList(Music music)  
  64.     {  
  65.         musicList.add(music);  
  66.         musicsSize = musicList.size();  
  67.     }  
  68.   
  69.     /** 
  70.      * @return the docsSize 
  71.      */  
  72.     public int getDocsSize()  
  73.     {  
  74.         return this.docsSize;  
  75.     }  
  76.   
  77.     /** 
  78.      * @param docsSize 
  79.      *            the docsSize to set 
  80.      */  
  81.     public void setDocsSize(int docsSize)  
  82.     {  
  83.         this.docsSize = docsSize;  
  84.     }  
  85.   
  86.     /** 
  87.      * @return the docList 
  88.      */  
  89.     public List<Doc> getDocList()  
  90.     {  
  91.         return this.docList;  
  92.     }  
  93.   
  94.     /** 
  95.      * @return the name 
  96.      */  
  97.     public String getName()  
  98.     {  
  99.         return this.name;  
  100.     }  
  101.   
  102.     /** 
  103.      * @param name 
  104.      *            the name to set 
  105.      */  
  106.     public void setName(String name)  
  107.     {  
  108.         this.name = name;  
  109.     }  
  110.   
  111.     /** 
  112.      * @return the author 
  113.      */  
  114.     public String getAuthor()  
  115.     {  
  116.         return this.author;  
  117.     }  
  118.   
  119.     /** 
  120.      * @return the doc 
  121.      */  
  122.     public Doc getDoc()  
  123.     {  
  124.         return this.doc;  
  125.     }  
  126.   
  127.     /** 
  128.      * @param doc 
  129.      *            the doc to set 
  130.      */  
  131.     public void setDoc(Doc doc)  
  132.     {  
  133.         this.doc = doc;  
  134.     }  
  135.   
  136.     /** 
  137.      * @param author 
  138.      *            the author to set 
  139.      */  
  140.     public void setAuthor(String author)  
  141.     {  
  142.         this.author = author;  
  143.     }  
  144.   
  145.     /** 
  146.      * @return the version 
  147.      */  
  148.     public String getVersion()  
  149.     {  
  150.         return this.version;  
  151.     }  
  152.   
  153.     /** 
  154.      * @param version 
  155.      *            the version to set 
  156.      */  
  157.     public void setVersion(String version)  
  158.     {  
  159.         this.version = version;  
  160.     }  
  161.   
  162.     /** 
  163.      * @return the music 
  164.      */  
  165.     public Music getMusic()  
  166.     {  
  167.         return this.music;  
  168.     }  
  169.   
  170.     /** 
  171.      * @param music 
  172.      *            the music to set 
  173.      */  
  174.     public void setMusic(Music music)  
  175.     {  
  176.         this.music = music;  
  177.     }  
  178.   
  179.     /** 
  180.      * @return the musicList 
  181.      */  
  182.     public List<Music> getMusicList()  
  183.     {  
  184.         return this.musicList;  
  185.     }  
  186.   
  187.     /** 
  188.      * @return the musicsSize 
  189.      */  
  190.     public int getMusicsSize()  
  191.     {  
  192.         return this.musicsSize;  
  193.     }  
  194.   
  195.     /** 
  196.      * @param musicsSize 
  197.      *            the musicsSize to set 
  198.      */  
  199.     public void setMusicsSize(int musicsSize)  
  200.     {  
  201.         this.musicsSize = musicsSize;  
  202.     }  
  203.   
  204. }  

Resource.betwixt
xml 代码
 
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <info primitiveTypes="element">  
  3.     <element name="sync">  
  4.         <attribute name="version" property="version"/>  
  5.         <element name="resource">  
  6.             <!--   
  7.             <hide property="name" /> 
  8.             -->  
  9.             <element name="musicRes" property="music"/>  
  10.             <element name="docList">  
  11.                 <attribute name="docsSize" property="docsSize"/>  
  12.                 <element name="doc" property="docList"/>  
  13.             </element>  
  14.             <element name="musicList">  
  15.                 <attribute name="musicsSize" property="musicsSize"/>  
  16.                 <element name="music" property="musicList"/>  
  17.             </element>  
  18.             <element name="docMap">  
  19.                 <element name="doc" property="docMap"/>  
  20.             </element>  
  21.             <addDefaults/>  
  22.         </element>  
  23.     </element>  
  24. </info>  

测试代码
java 代码
 
  1. Doc doc = new Doc();  
  2.             doc.setName("doc_name");  
  3.             doc.setUrl("doc_url");  
  4.             doc.setVersion("1.0.0");  
  5.             Music music = new Music();  
  6.             music.setName("music_name");  
  7.             music.setMp3File("music_mp3file");  
  8.             Resource resource = new Resource();  
  9.             resource.setVersion("1.0.0");  
  10.             resource.setDoc(doc);  
  11.             resource.setMusic(music);  
  12.             resource.setName("resource_name");  
  13.             resource.setAuthor("resource_author");  
  14.             //  
  15.             resource.addToDocList(doc);  
  16.             resource.addToDocList(doc);  
  17.             resource.addToMusicList(music);  
  18.             resource.addToMusicList(music);  
  19.             //  
  20.             resource.addToDocMap("doc1", doc);  
  21.             // resource.addToMap("mucis1", music);  
  22.             //  
  23.             Writer outputWriter = new FileWriter("e:\\test.xml");  
  24.             BeanWriter beanWriter = new BeanWriter(outputWriter);  
  25.   
  26.             /** 
  27.              * beanWriter.getXMLIntrospector().getConfiguration().setElementNameMapper(new 
  28.              * org.apache.commons.betwixt.strategy.DecapitalizeNameMapper()); 
  29.              * beanWriter.getXMLIntrospector().getConfiguration().setElementNameMapper(new 
  30.              * org.apache.commons.betwixt.strategy.CapitalizeNameMapper()); 
  31.              * beanWriter.getXMLIntrospector().getConfiguration().setElementNameMapper(new 
  32.              * org.apache.commons.betwixt.strategy.HyphenatedNameMapper()); 
  33.              */  
  34.   
  35.             // beanWriter.getXMLIntrospector().getConfiguration().setPluralStemmer(new  
  36.             // ChinesePluralMapper());  
  37.             beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);  
  38.             beanWriter.getBindingConfiguration().setMapIDs(false);  
  39.             beanWriter.enablePrettyPrint();  
  40.             beanWriter.setEndTagForEmptyElement(true);  
  41.             beanWriter.setIndent("\t");  
  42.             //  
  43.             beanWriter.writeXmlDeclaration("<?xml version=\'1.0\' ?>");  
  44.             beanWriter.write(resource);  
  45.             outputWriter.close();  

输出结果
xml 代码
 
  1. <?xml version='1.0' ?>  
  2.     <sync version="1.0.0">  
  3.         <resource>  
  4.             <musicRes>  
  5.                 <mp3File>music_mp3file</mp3File>  
  6.                 <name>music_name</name>  
  7.             </musicRes>  
  8.             <docList docsSize="2">  
  9.                 <doc version="1.0.0">  
  10.                     <contentUrl>doc_url</contentUrl>  
  11.                     <docName>doc_name</docName>  
  12.                 </doc>  
  13.                 <doc version="1.0.0">  
  14.                     <contentUrl>doc_url</contentUrl>  
  15.                     <docName>doc_name</docName>  
  16.                 </doc>  
  17.             </docList>  
  18.             <musicList musicsSize="2">  
  19.                 <music>  
  20.                     <mp3File>music_mp3file</mp3File>  
  21.                     <name>music_name</name<sp>
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics