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

          XStream是一個開源項目,利用它可以方便的進行java對象和xml之間進行轉(zhuǎn)換,從而在測試,服務器設置等方面有很好的應用。

          先建兩個java對象

          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.生成一個Person對象,并將其轉(zhuǎn)化為xml

          //生成一個java對象
          ??Person person=new Person();
          ??person.setName("chb");
          ??person.setAge(22);
          ??person.setSex("boy");
          ??
          ??//生成一個Adress對象
          ??Adress adr=new Adress();
          ??adr.setProvice("Beijing");
          ??adr.setCity("Beijing");
          ??person.setAdress(adr);
          ??
          ??//將java對象轉(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é)點是<xml_chb.Person>是類的全名,這樣看起來很繁瑣,我們可以使用別名來改進這一現(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/下載,那里有一些簡單例子

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

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

          posted on 2006-09-25 23:33 揚州夢 閱讀(289) 評論(0)  編輯  收藏 所屬分類: java

          統(tǒng)計

          主站蜘蛛池模板: 巨鹿县| 金昌市| 台前县| 龙口市| 吐鲁番市| 霍邱县| 米林县| 于田县| 墨江| 上栗县| 宝兴县| 彰化县| 探索| 满城县| 两当县| 丰都县| 博罗县| 红原县| 新兴县| 珲春市| 杭州市| 抚松县| 扶风县| 甘孜县| 蛟河市| 翁源县| 化德县| 保山市| 枞阳县| 黔南| 龙江县| 郧西县| 岗巴县| 福建省| 陵水| 彩票| 垣曲县| 镶黄旗| 门头沟区| 遂平县| 英山县|