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

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

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

    使用XStream進(jìn)行POJO和xml之間的轉(zhuǎn)換

    XStream是一個(gè)開源項(xiàng)目,利用它可以方便的進(jìn)行java對(duì)象和xml之間進(jìn)行轉(zhuǎn)換,從而在測(cè)試,服務(wù)器設(shè)置等方面有很好的應(yīng)用。

    先建兩個(gè)java對(duì)象

    1.Adress類

    package ?xml_chb;

    public ? class ?Adress? {
    ????
    private ?String?provice;
    ????
    private ?String?city;
    ????
    public ?String?getCity()? {
    ????????
    return ?city;
    ????}

    ????
    public ? void ?setCity(String?city)? {
    ????????
    this .city? = ?city;
    ????}

    ????
    public ?String?getProvice()? {
    ????????
    return ?provice;
    ????}

    ????
    public ? void ?setProvice(String?provice)? {
    ????????
    this .provice? = ?provice;
    ????}

    }

    ?2.Person類

    package ?xml_chb;

    public ? class ?Person? {

    ????
    private ?String?name = "" ;
    ????
    private ?String?sex = "" ;
    ????
    private ? int ?age;
    ????
    private ?String?mobile;
    ????
    private ?Adress?adress;
    ????
    ????
    public ? int ?getAge()? {
    ????????
    return ?age;
    ????}


    ????
    public ? void ?setAge( int ?age)? {
    ????????
    this .age? = ?age;
    ????}


    ????
    public ?String?getMobile()? {
    ????????
    return ?mobile;
    ????}


    ????
    public ? void ?setMobile(String?mobile)? {
    ????????
    this .mobile? = ?mobile;
    ????}


    ????
    public ?String?getName()? {
    ????????
    return ?name;
    ????}


    ????
    public ? void ?setName(String?name)? {
    ????????
    this .name? = ?name;
    ????}


    ????
    public ?String?getSex()? {
    ????????
    return ?sex;
    ????}


    ????
    public ? void ?setSex(String?sex)? {
    ????????
    this .sex? = ?sex;
    ????}


    ????
    public ?Adress?getAdress()? {
    ????????
    return ?adress;
    ????}


    ????
    public ? void ?setAdress(Adress?adress)? {
    ????????
    this .adress? = ?adress;
    ????}


    }

    3.生成一個(gè)Person對(duì)象,并將其轉(zhuǎn)化為xml

    //生成一個(gè)java對(duì)象
    ??Person person=new Person();
    ??person.setName("chb");
    ??person.setAge(22);
    ??person.setSex("boy");
    ??
    ??//生成一個(gè)Adress對(duì)象
    ??Adress adr=new Adress();
    ??adr.setProvice("Beijing");
    ??adr.setCity("Beijing");
    ??person.setAdress(adr);
    ??
    ??//將java對(duì)象轉(zhuǎn)化為xml
    ??XStream xstream=new XStream(new DomDriver());
    ??String strxml=xstream.toXML(person);

    ??System.out.println(strxml);

    輸出:

    < xml__chb .Person >
    ??
    < name > chb </ name >
    ??
    < sex > boy </ sex >
    ??
    < age > 22 </ age >
    ??
    < adress >
    ????
    < provice > Beijing </ provice >
    ????
    < city > Beijing </ city >
    ??
    </ adress >
    </ xml__chb.Person >

    我們可以看到,xml根結(jié)點(diǎn)是<xml_chb.Person>是類的全名,這樣看起來很繁瑣,我們可以使用別名來改進(jìn)這一現(xiàn)象:

    ? xstream.alias("person",Person.class);
    ??strxml=xstream.toXML(person);
    ??System.out.println(strxml);

    輸出結(jié)果為:

    < person >
    ??
    < name > chb </ name >
    ??
    < sex > boy </ sex >
    ??
    < age > 22 </ age >
    ??
    < adress >
    ????
    < provice > Beijing </ provice >
    ????
    < city > Beijing </ city >
    ??
    </ adress >
    </ person >

    4.從xml轉(zhuǎn)化為POJO

    String str="<person><name>emily</name><sex>girl</sex><age>22</age><adress><provice>Beijing</provice><city>Beijing</city></adress></person>";
    ??Person person1=(Person)xstream.fromXML(str);
    ??System.out.println("姓名:"+person1.getName());
    ??System.out.println("性別:"+person1.getSex());

    輸出結(jié)果為:

    姓名:emily
    性別:girl

    5.修改元素值

    Adress adr1=new Adress();
    ??adr1.setProvice("Shanghai");
    ??adr1.setCity("Shanghai");
    ??person.setAdress(adr1);
    ??strxml=xstream.toXML(person);
    ??System.out.println(strxml);

    輸出結(jié)果:

    < person >
    ??
    < name > chb </ name >
    ??
    < sex > boy </ sex >
    ??
    < age > 22 </ age >
    ??
    < adress >
    ????
    < provice > Shanghai </ provice >
    ????
    < city > Shanghai </ city >
    ??
    </ adress >
    </ person >

    XStream的jar包可以直接到http://xstream.codehaus.org/下載,那里有一些簡(jiǎn)單例子

    XStream是個(gè)很小的開源項(xiàng)目,所以它能實(shí)現(xiàn)的功能也就很有限,它只能包裝簡(jiǎn)單類型的元素進(jìn)行轉(zhuǎn)換,復(fù)雜類型的,比如Calendar,Date等類型則需要用戶自己實(shí)現(xiàn)Converter。

    還有,XStream對(duì)xml的操作并不好,比如想把一個(gè)子節(jié)點(diǎn)變成屬性就是一個(gè)很復(fù)雜的工作,但是大家平時(shí)用于測(cè)試的話,看看對(duì)象中到底存著什么數(shù)據(jù),還是必要的。

    posted on 2006-09-25 23:33 揚(yáng)州夢(mèng) 閱讀(290) 評(píng)論(0)  編輯  收藏 所屬分類: java

    統(tǒng)計(jì)

    主站蜘蛛池模板: 一级一看免费完整版毛片| 亚洲美女aⅴ久久久91| 国产亚洲精品美女久久久久| 国产黄色免费网站| 亚洲精品视频在线免费| 久久久久久国产精品免费免费男同 | 国产成人精品日本亚洲语音| 青青草免费在线视频| 33333在线亚洲| 国内精品免费视频自在线| 亚洲妇女无套内射精| 四虎影在线永久免费四虎地址8848aa| 亚洲国产成人久久精品软件 | 亚洲国产精品综合一区在线| 99久久免费观看| 亚洲精品成人图区| 日韩免费精品视频| 久久久久亚洲AV无码去区首| 又大又硬又爽免费视频| 一个人看的免费观看日本视频www| 国产亚洲大尺度无码无码专线| 大地影院MV在线观看视频免费| 99人中文字幕亚洲区| 亚洲人成网站免费播放| 特级aaaaaaaaa毛片免费视频| 国产精品亚洲综合一区| 亚洲电影免费在线观看| 亚洲偷偷自拍高清| 亚洲?V乱码久久精品蜜桃| 黄色网站软件app在线观看免费| 亚洲高清不卡视频| 免费观看亚洲人成网站| 国产午夜无码精品免费看动漫| 亚洲国产日韩在线人成下载| 免费乱码中文字幕网站| 久久久久久久99精品免费| 亚洲AV无码一区二区乱子仑 | 91在线视频免费看| 一级毛片不卡免费看老司机| 亚洲综合激情视频| 夜色阁亚洲一区二区三区|