<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Ordinary hut

    人間一福地,勝似天仙宮
    posts - 61, comments - 50, trackbacks - 0, articles - 1

    JAXB2完成java bean到xml的相互轉(zhuǎn)換

    Posted on 2011-06-03 12:04 landor 閱讀(7876) 評(píng)論(1)  編輯  收藏 所屬分類: XML
    JAXB功能非常強(qiáng)大,主要是對(duì)java bean到xml之間的互轉(zhuǎn);JAXB的doc比較全面,網(wǎng)址:
    http://jaxb.java.net/tutorial/
    jdk5+已經(jīng)自帶了jaxb的包;應(yīng)該是在rt.jar里;用法也比較簡(jiǎn)單,步驟如下:
    1 加入@XmlRootElement注解,標(biāo)識(shí)xml根節(jié)點(diǎn),默認(rèn)名字是類名,可以加入name屬性來(lái)改名;
    @XmlRootElement
    public class User{
        
    private String userId;
        
    private String userName;
        
    public String getUserId(){};
        
    public String getUserName(){};
    2 加入@XmlElement注解,生成xml中的子節(jié)點(diǎn),其實(shí)可以不加,不加默認(rèn)就是生成,可以指定name修改節(jié)點(diǎn)名
        private String userId;
        private String userName;
         @XmlElement
        public String getUserId(){};
        
    public String getUserName(){};
    3 現(xiàn)在就可以生成xml了,代碼如下:
    public class TestJAXB {
        @Test
        
    public void bean2XML() throws Exception{
            User user 
    = new User();
            user.setUserId(
    "id1");
            user.setUserName(
    "aaa");
            JAXBContext context 
    = JAXBContext.newInstance(user.getClass());
            Marshaller m 
    = context.createMarshaller();
            StringWriter sw 
    = new StringWriter();
            m.marshal(user,sw);
            System.out.println(sw.toString());
        }
    }
    4 生成了xml文件,可以轉(zhuǎn)換成bean,比如:
    public class TestJAXB {
        @Test
        
    public void xml2Bean() throws Exception{
            User user 
    = new User();
            String xml 
    = "xml字符串";
            JAXBContext context 
    = JAXBContext.newInstance(user.getClass());
            Unmarshaller um 
    =context.createUnmarshaller();
            StringReader sr 
    = new StringReader(xml);
            user 
    = (User)um.unmarshal(sr);
            
            System.out.println(user.getUserId());
        }
    }

    簡(jiǎn)單轉(zhuǎn)化就做完了,有幾個(gè)地方:
    1 生成xml比較簡(jiǎn)單,如果想把User里的userId和name變成xml根節(jié)點(diǎn)的一個(gè)屬性可用(如果有g(shù)et方法,需要加到get方法上)
        @XmlAttribute
        
    String userId;
        @XmlAttribute
       
    String userName;
    生成的xml類似:
    <user userId="id1" userName="aaa">
        
    <!--其他元素內(nèi)容-->
    </user>

    2 如果想在節(jié)點(diǎn)外面包裹一層,可以用
        @XmlElementWrapper(name="wapper" )
        @XmlAttribute
        
    private String userName;
    生成的xml類似:
    <user>
        
    <userId>id1</userId>
        
    <wapper>
            
    <userName>aaa</userName>
        
    </wapper>
        
    <!--其他元素內(nèi)容-->
    </user>
    3 關(guān)于多態(tài),JAXB也是支持的:有兩種方式
        A 通過(guò)@XmlSeeAlso,比如:
    @XmlRootElement
    public class User{
        Person person;
    }

    @XmlSeeAlso({Man.
    class, Girl.class})
    public class Person{
    }

    public class Man extends Person{
    }

    public class Girl extends Person{
    }

      B 用SeeAlso注解的缺點(diǎn)是:每次加一個(gè)子類都需要修改注解代碼重新編譯,其實(shí)可以直接在JAXBContext.newInstance()中加入這些子類:比如
    JAXBContext context = JAXBContext.newInstance(user.getClass(), Man.class, Girl.class);

    以上兩種方式都可以把xml  Unmarshaller 成java bean;根據(jù)情況任選其一。


    Feedback

    # re: JAXB2完成java bean到xml的相互轉(zhuǎn)換  回復(fù)  更多評(píng)論   

    2015-03-08 09:01 by zuidaima
    java通過(guò)JAXB框架轉(zhuǎn)換xml為java bean對(duì)象代碼片段分享 http://zuidaima.com/share/2180116115393536.htm

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久精品国产这里是免费| 亚洲人成在线免费观看| 久久精品国产亚洲一区二区| 6080午夜一级毛片免费看6080夜福利| 亚洲偷偷自拍高清| 免费中文字幕一级毛片| 一级毛片免费播放| 国产精品亚洲а∨天堂2021| 亚洲av中文无码乱人伦在线r▽| 国色精品卡一卡2卡3卡4卡免费| 狠狠热精品免费观看| 久久精品a亚洲国产v高清不卡| 妞干网手机免费视频| 两个人看的www免费视频| 日韩亚洲产在线观看| 亚洲精品乱码久久久久久按摩| 中文字幕影片免费在线观看 | 国产国拍亚洲精品mv在线观看| 2021免费日韩视频网| 久久成人永久免费播放| 亚洲av乱码一区二区三区| 国产亚洲精品成人a v小说| 69成人免费视频无码专区| 99精品视频免费| www亚洲精品久久久乳| 亚洲欧洲日本国产| 久久精品国产亚洲麻豆| 亚洲国产精品成人久久蜜臀 | 亚洲精品第一国产综合亚AV| 亚洲午夜未满十八勿入| 亚洲国产精品成人久久蜜臀| 好男人看视频免费2019中文| 鲁大师在线影院免费观看| 国产免费人成视频尤勿视频 | 两个人的视频高清在线观看免费| a级在线免费观看| a一级爱做片免费| 免费精品国自产拍在线播放 | 亚洲JLZZJLZZ少妇| 国产v亚洲v天堂a无| 亚洲福利电影在线观看|