java 利用Xstream对list中的string起别名

1. [代码]1.实体类:PersonBean     跳至 [1] [2] [3] [4] [5] [6] [7] [8] [9] [全屏预览]

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.List;
 
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
 
/**
  *@ClassName:PersonBean
  *@author: chenyoulong  Email: chen.youlong@payeco.com
  *@date :2012-9-28 下午3:10:47
  *@Description:TODO
  */
@XStreamAlias ( "person" )
public class PersonBean {
     @XStreamAlias ( "firstName" )
     private String firstName;
     @XStreamAlias ( "lastName" )
     private String lastName;
     
     @XStreamAlias ( "telphone" )
     private PhoneNumber tel;
     @XStreamAlias ( "faxphone" )
     private PhoneNumber fax;
     
     //测试一个标签下有多个同名标签
     @XStreamAlias ( "friends" )
     private Friends friend;
     
     //测试一个标签下循环对象
     @XStreamAlias ( "pets" )
     private Pets pet;
     
     
     //省略setter和getter
}

2. [代码]2.实体类:PhoneNumber     

?
1
2
3
4
5
6
7
8
9
10
@XStreamAlias ( "phoneNumber" )
     public  class PhoneNumber{
         @XStreamAlias ( "code" )
         private int code;
         @XStreamAlias ( "number" )
         private String number;
         
             //省略setter和getter
         
     }

实体类:Friends(一个标签下有多个同名标签 )

/**
      * 用Xstream注解的方式实现:一个标签下有多个同名标签
      *@ClassName:Friends
      *@author: chenyoulong  Email: chen.youlong@payeco.com
      *@date :2012-9-28 下午4:32:24
      *@Description:TODO 5个name 中国,美国,俄罗斯,英国,法国
      *http://blog.csdn.net/menhuanxiyou/article/details/5426765
      */
     public static class Friends{
         @XStreamImplicit (itemFieldName= "name" )   //itemFieldName定义重复字段的名称,
         /*<friends>                               <friends>
             <name>A1</name>                         <String>A1</String>
             <name>A2</name>    如果没有,则会变成    =====>       <String>A1</String>
             <name>A3</name>                         <String>A1</String>
         </friends>                                </friends>
       */
         private List<String> name;
 
         public List<String> getName() {
             return name;
         }
 
         public void setName(List<String> name) {
             this .name = name;
         }
     }

4. [代码]4.1实体类:Animal(同一标签下循环对象实体1)     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//测试同一标签下循环某一对象
     public  class Animal{
         @XStreamAlias ( "name" )
         private String name;
         @XStreamAlias ( "age" )
         private int age;
         public Animal(String name, int age){
             this .name=name;
             this .age=age;
         }
         
               //省略setter和getter
     }
    

5. [代码]4.2实体类:Pets(同一标签下循环对象实体2)     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
      * 测试同一标签下循环某一对象
      *@ClassName:Pets
      *@author: chenyoulong  Email: chen.youlong@payeco.com
      *@date :2012-9-28 下午6:26:01
      *@Description:TODO
      */
     public class Pets{
         @XStreamImplicit (itemFieldName= "pet" )
         private List<Animal> animalList;
         
         public List<Animal> getAnimalList() {
             return animalList;
         }
 
         public void setAnimalList(List<Animal> animalList) {
             this .animalList = animalList;
         }
         
     }

6. [代码]5.main函数示例1:toxml     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JsonWriter.Format;
import com.thoughtworks.xstream.io.xml.DomDriver;
 
/**
  *@ClassName:PersonTest
  *@author: chenyoulong 
  *@date :2012-9-28 下午3:25:09
  *@Description:TODO
  */
public class PersonTest {
 
     /**
      * @Title: main
      * @Description: TODO
      * @param args
      * @return void 
      */
     public static void main(String[] args) {
         // TODO Auto-generated method stub
         
         PersonBean per= new PersonBean();
         per.setFirstName( "chen" );
         per.setLastName( "youlong" );
         
         PhoneNumber tel= new PhoneNumber();
         tel.setCode( 137280 );
         tel.setNumber( "137280968" );
         
         PhoneNumber fax= new PhoneNumber();
         fax.setCode( 20 );
         fax.setNumber( "020221327" );
         per.setTel(tel);
         per.setFax(fax);
         
         
         //测试一个标签下有多个同名标签
         List<String> friendList= new ArrayList<String>();
         friendList.add( "A1" );
         friendList.add( "A2" );
         friendList.add( "A3" );
         Friends friend1= new Friends();
         friend1.setName(friendList);
         per.setFriend(friend1);
         
         //测试一个标签下循环对象
         Animal dog= new Animal( "Dolly" , 2 );
         Animal cat= new Animal( "Ketty" , 2 );
         List<Animal> petList= new ArrayList<Animal>();
         petList.add(dog);
         petList.add(cat);
         Pets pet= new Pets();
         pet.setAnimalList(petList);
         per.setPet(pet);
         
                     //java对象转换成xml
         String xml=XmlUtil.toXml(per);
         System.out.println( "xml===" +xml);
         
     }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
xml===<person>
   <firstName>chen</firstName>
   <lastName>youlong</lastName>
   <telphone>
     <code> 137280 </code>
     <number> 137280968 </number>
   </telphone>
   <faxphone>
     <code> 20 </code>
     <number> 020221327 </number>
   </faxphone>
   <friends>
     <name>A1</name>
     <name>A2</name>
     <name>A3</name>
   </friends>
   <pets>
     <pet>
       <name>doly</name>
       <age> 2 </age>
     </pet>
     <pet>
       <name>Ketty</name>
       <age> 2 </age>
     </pet>
   </pets>
</person>

 

另一种方法
PersonBean 中的
  @XStreamAlias ( "friends" )
     private Friends friend;

改成
  @XStreamAlias ( "friends" )
     private List<Strinng> friend;
       java对象转换成xml时加个
xstream.alias("name", String.class);也可以实现
  <friends>
     <name>A1</name>
     <name>A2</name>
     <name>A3</name>
   </friends>
这种效果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值