一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

使用jaxb將XML轉化為JAVA BEAN

 CevenCheng 2011-08-05
直接貼代碼了,其中的參數的意思,自己查查就知道了,或者用一下就明白了。 
Java代碼  收藏代碼
  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4. import javax.xml.bind.annotation.XmlAttribute;  
  5. import javax.xml.bind.annotation.XmlElement;  
  6. import javax.xml.bind.annotation.XmlRootElement;  
  7. import javax.xml.bind.annotation.XmlTransient;  
  8.   
  9. @XmlRootElement(name="module")  
  10. public class Module extends Metadata{  
  11.       
  12.     @XmlAttribute(name="name")  
  13.     public String name;  
  14.       
  15.     @XmlAttribute(name="template")  
  16.     public String template;  
  17.       
  18.     @XmlElement  
  19.     public Resources resources;  
  20.       
  21.     @XmlElement  
  22.     public HeaderItems headerItems;  
  23.       
  24.     @XmlElement  
  25.     public Properties properties;  
  26.       
  27.     @XmlElement  
  28.     public BodyItems bodyItems;  
  29.   
  30.     @XmlTransient  
  31.     public String getName() {  
  32.         return name;  
  33.     }  
  34.   
  35.     public void setName(String name) {  
  36.         this.name = name;  
  37.     }  
  38.   
  39.     @XmlTransient  
  40.     public String getTemplate() {  
  41.         return template;  
  42.     }  
  43.   
  44.     public void setTemplate(String template) {  
  45.         this.template = template;  
  46.     }  
  47.   
  48.     @XmlTransient  
  49.     public Resources getResources() {  
  50.         return resources;  
  51.     }  
  52.   
  53.     public void setResources(Resources resources) {  
  54.         this.resources = resources;  
  55.     }  
  56.   
  57.     @XmlTransient  
  58.     public HeaderItems getHeaderItems() {  
  59.         return headerItems;  
  60.     }  
  61.   
  62.     public void setHeaderItems(HeaderItems headerItems) {  
  63.         this.headerItems = headerItems;  
  64.     }  
  65.   
  66.     @XmlTransient  
  67.     public Properties getProperties() {  
  68.         return properties;  
  69.     }  
  70.   
  71.     public void setProperties(Properties properties) {  
  72.         this.properties = properties;  
  73.     }  
  74.   
  75.     @XmlTransient  
  76.     public BodyItems getBodyItems() {  
  77.         return bodyItems;  
  78.     }  
  79.   
  80.     public void setBodyItems(BodyItems bodyItems) {  
  81.         this.bodyItems = bodyItems;  
  82.     }  
  83. }  

Moduel對象其中一個對象屬性: 
Java代碼  收藏代碼
  1. import java.util.List;  
  2.   
  3. import javax.xml.bind.annotation.XmlElement;  
  4. import javax.xml.bind.annotation.XmlTransient;  
  5.   
  6. public class HeaderItems extends Metadata {  
  7.       
  8.     @XmlElement(name="field")  
  9.     private List<Field> fields;  
  10.   
  11.     @XmlTransient  
  12.     public List<Field> getFields() {  
  13.         return fields;  
  14.     }  
  15.   
  16.     public void setFields(List<Field> fields) {  
  17.         this.fields = fields;  
  18.         for (int i=0; i<fields.size(); i++)  
  19.             fields.get(i).setHeaderItem(true);  
  20.     }   
  21.       
  22.     public void clear() {  
  23.         fields.clear();  
  24.     }  
  25.       
  26. }  

Java代碼  收藏代碼
  1. package com.morningstar.wfe.metadata.node;  
  2.   
  3. import java.util.List;  
  4.   
  5. import javax.xml.bind.annotation.XmlAttribute;  
  6. import javax.xml.bind.annotation.XmlElement;  
  7. import javax.xml.bind.annotation.XmlTransient;  
  8.   
  9. public class Map extends Datasource {  
  10.     @XmlAttribute(name="name")  
  11.     public String name;  
  12.       
  13.     @XmlAttribute(name="type")  
  14.     public String type;  
  15.   
  16.     @XmlAttribute(name="url")  
  17.     public String url;  
  18.       
  19.     @XmlElement  
  20.     public Entries entries;  
  21.   
  22.     public void setName(String name) {  
  23.         this.name = name;  
  24.     }  
  25.     public void setType(String type) {  
  26.         this.type = type;  
  27.     }  
  28.     public void setEntries(Entries entries) {  
  29.         this.entries = entries;  
  30.     }  
  31.       
  32.     @XmlTransient  
  33.     public String getName() {  
  34.         return name;  
  35.     }  
  36.       
  37.     @XmlTransient  
  38.     public String getType() {  
  39.         return type;  
  40.     }  
  41.       
  42.     @XmlTransient  
  43.     public Entries getEntries() {  
  44.         return this.entries;  
  45.     }  
  46.       
  47.     @XmlTransient  
  48.     public String getUrl() {  
  49.         return url;  
  50.     }  
  51.     public void setUrl(String url) {  
  52.         this.url = url;  
  53.     }  
  54.       
  55.     public int size() {  
  56.         if (entries == nullreturn 0;  
  57.           
  58.         return entries.size();  
  59.     }  
  60.           
  61.     public Entry get(int index) {  
  62.         if (entries == nullreturn null;  
  63.           
  64.         return entries.get(index);  
  65.     }  
  66.       
  67.       
  68.     public List<Entry> getEntriesList() {  
  69.         return entries.getEntryList();  
  70.     }  
  71.       
  72. }  

最后XML閃亮登場: 
Java代碼  收藏代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <module name='showcase' template='showcase.ftl'>  
  4.     <resources>  
  5.         <map name='css' type='static'>  
  6.             <entries>  
  7.                 <entry label="text_a1" value="text_a1"></entry>  
  8.                 <entry label="text_a2" value="text_a2"></entry>  
  9.                 <entry label="text_a3" value="text_a3"></entry>  
  10.                 <entry label="text_c1" value="text_c1"></entry>  
  11.                 <entry label="text_c2" value="text_c2"></entry>  
  12.             </entries>  
  13.         </map>  
  14.         <map name='status' type='ws' url="xxxx">  
  15.         </map>  
  16.         <map name='author' type='file' url="xxxx">  
  17.         </map>  
  18.     </resources>  
  19.   
  20.     <headerItems>  
  21.         <field name='active1' type='checkbox' datasource='css'  
  22.             multiple='false' />  
  23.         <field name='title1' type='text' format="string" required="true"/>  
  24.         <field name='radio11' type='radio' datasource='css'/>  
  25.         <field name='url11' type='url' format="string"/>  
  26.         <field name='dropdownlist111' type='select' datasource='css' multiple="true" height="80" width="100"/>  
  27.         <field name='title22' type='textarea' width="200" height="100" spellCheck="true" format="string" required="true"/>  
  28.     </headerItems>  
  29.   
  30.       
  31.     <properties>  
  32.         <field name='active12' type='checkbox' datasource='status'  
  33.             multiple='false' />  
  34.         <field name='title12' type='date' format="int" />  
  35.         <field name='email11' type='email' visible="true" />  
  36.           
  37.     </properties>  
  38.   
  39.     <bodyItems>  
  40.         <field label="Name" name="name" type="text" visible="false"  
  41.               editable="false"></field>  
  42.           
  43.         <field name="readings_list" type="datatable" action="insert,remove">  
  44.             <columns>  
  45.                 <field label="Title" name="rSource" type="text" visible="true" width="30"/>  
  46.                 <field label="URL" name="rURL" type="text" visible="true" width="40"/>  
  47.                 <field label="Date" name="rDate" type="text" visible="true" width="50"/>  
  48.                 <field label="Source" name="rSource" type="text" visible="true" width="60"/>  
  49.             </columns>  
  50.         </field>  
  51.           
  52.     </bodyItems>  
  53.   
  54. </module>  


Metadata是一個抽象類,描述了些 ID NAME VALUE基本屬性 沒什么特別的 

關于XML轉java對象的操作: 
Java代碼  收藏代碼
  1. public static Module parse(String metadata) throws MetadataParserException {  
  2.         Module module = null;  
  3.         try {  
  4.             JAXBContext jaxbContext = JAXBContext.newInstance(Module.class);  
  5.             Unmarshaller um = jaxbContext.createUnmarshaller();  
  6.             module = (Module)um.unmarshal(new ByteArrayInputStream(metadata.getBytes()));  
  7.         } catch (JAXBException e) {  
  8.             log.warn("JAXB castor failed to convert the metadata to module instance by {}",e.getMessage());  
  9.             throw new MetadataParserException();  
  10.         }  
  11.         return module;  
  12.     }  


這樣的話傳進XML的字符串,就可以解析出這個JAVA對象。完全不用寫任何過多的代碼。豈不爽哉?!?。?! 

附一個java bean <=> xml 的unmi同志原創(chuàng)文檔,主要是比較Jaxb和castor。 


提供一個JAXB學習的地址:http://jaxb./ 

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美日韩国产亚洲三级理论片| 国产又猛又大又长又粗| 老熟妇2久久国内精品| 久热久热精品视频在线观看| 香蕉网尹人综合在线观看| 成人三级视频在线观看不卡| 天堂热东京热男人天堂| 精品香蕉国产一区二区三区| 视频在线免费观看你懂的| 成年男女午夜久久久精品| 国产精品丝袜一二三区| 欧美丰满人妻少妇精品| 最近的中文字幕一区二区| 亚洲一区二区三区在线免费| 国产精品一区日韩欧美| 最好看的人妻中文字幕| 妻子的新妈妈中文字幕| 国产精品久久久久久久久久久痴汉| 91人妻久久精品一区二区三区| 高清一区二区三区大伊香蕉| 欧洲偷拍视频中文字幕| 在线观看日韩欧美综合黄片| 精品推荐国产麻豆剧传媒| 欧美精品二区中文乱码字幕高清| 日韩精品视频免费观看| 亚洲男人的天堂色偷偷| 91国内视频一区二区三区| 91亚洲精品国产一区| 好东西一起分享老鸭窝| 亚洲中文字幕乱码亚洲| 欧美三级大黄片免费看| 国产高清一区二区白浆| 精品一区二区三区中文字幕| 自拍偷拍福利视频在线观看| 高清不卡一卡二卡区在线| 精品推荐国产麻豆剧传媒| 国产又粗又猛又长又黄视频| 久久99爱爱视频视频| 亚洲成人久久精品国产| 91亚洲国产—区=区a| 少妇毛片一区二区三区|