1.Xstream简介;
2.Xstream注解常用知识:
@XStreamAlias("message") 别名注解 作用目标: 类,字段 @XStreamImplicit 隐式集合(例如list集合)
@XStreamImplicit(itemFieldName="part") 作用目标: 集合字段 @XStreamConverter(SingleValueCalendarConverter.class) 注入转换器 作用目标: 对象 @XStreamAsAttribute 转换成属性 作用目标: 字段 @XStreamOmitField 忽略字段 Auto-detect Annotations 自动侦查注解 xstream.autodetectAnnotations(true); 自动侦查注解与XStream.processAnnotations(Class[] cls)的区别在于性能.自动侦查注解将缓存所有类的类型. 3.案例分析: (1)同一标签下多个同名元素;
(2)同一标签下循环多个对象;
使用限制: JDK版本不能<1.5.
虽然预处理注解是安全的,但自动侦查注解可能发生竞争条件.
特点:
简化的API;
无映射文件;
高性能,低内存占用;
整洁的XML;
不需要修改对象;支持内部私有字段,不需要setter/getter方法,final字段;非公有类,内部类;类不需要默认构造器,完全对象图支持.维护对象引用计数,循环引用. i
提供序列化接口;
自定义转换类型策略;
详细的错误诊断;
快速输出格式;当前支持 JSON 和 morphing.
使用场景Transport转换
Persistence持久化对象
Configuration配置
Unit Tests单元测
隐式集合当我们使用集合类时不想显示集合,只显示里面的元素即可.
使用隐式集合前:
<list>
<element />
<list>
使用隐式集合:
xstream.addImplicitCollection(Person.class,"list");
使用隐式集合后:
<element />
2.Xstream注解常用知识:
@XStreamAlias("message") 别名注解 作用目标: 类,字段 @XStreamImplicit 隐式集合(例如list集合)
@XStreamImplicit(itemFieldName="part") 作用目标: 集合字段 @XStreamConverter(SingleValueCalendarConverter.class) 注入转换器 作用目标: 对象 @XStreamAsAttribute 转换成属性 作用目标: 字段 @XStreamOmitField 忽略字段 Auto-detect Annotations 自动侦查注解 xstream.autodetectAnnotations(true); 自动侦查注解与XStream.processAnnotations(Class[] cls)的区别在于性能.自动侦查注解将缓存所有类的类型. 3.案例分析: (1)同一标签下多个同名元素;
(2)同一标签下循环多个对象;
案例:
import
java.util.List;
com.thoughtworks.xstream.annotations.XStreamAlias;
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 {
"firstName"
private
String firstName;
"lastName"
String lastName;
"telphone"
PhoneNumber tel;
"faxphone"
PhoneNumber fax;
"friends"
Friends friend;
//测试一个标签下循环对象
"pets"
Pets pet;
//省略setter和getter
}
|
2.[代码]2.实体类:PhoneNumber
@H_301_383@
"phoneNumber"
1
2
3
4
5
6
7
8
9
10
PhoneNumber{
"code"
int
code;
"number"
String number;
3.[代码]3.实体类:Friends(一个标签下有多个同名标签 )
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
*@ClassName:Friends
*@date :2012-9-28 下午4:32:24
*@Description:TODO 5个name 中国,美国,俄罗斯,英国,法国
*http://blog.csdn.net/menhuanxiyou/article/details/5426765
static
Friends{
/*<friends> <friends>
<name>A1</name> <String>A1</String>
<name>A2</name> 如果没有,则会变成 =====> <String>A1</String>
<name>A3</name> <String>A1</String>
</friends> </friends>
*/
List<String> name;
List<String> getName() {
return
name;
}
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
//测试同一标签下循环某一对象
Animal{
String name;
"age"
age;
Animal(String name,
age){
.name=name;
.age=age;
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
*@date :2012-9-28 下午6:26:01
Pets{
"pet"
List<Animal> animalList;
List<Animal> getAnimalList() {
animalList;
setAnimalList(List<Animal> animalList) {
.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
com.thoughtworks.xstream.XStream;
com.thoughtworks.xstream.io.json.JsonWriter.Format;
com.thoughtworks.xstream.io.xml.DomDriver;
*@ClassName:PersonTest
*@author: chenyoulong
*@date :2012-9-28 下午3:25:09
PersonTest {
* @Title: main
* @Description: TODO
* @param args
* @return void
main(String[] args) {
// TODO Auto-generated method stub
PersonBean per=
new
PersonBean();
per.setFirstName(
"chen"
);
per.setLastName(
"youlong"
PhoneNumber tel=
PhoneNumber();
tel.setCode(
137280
tel.setNumber(
"137280968"
PhoneNumber fax=
fax.setCode(
20
fax.setNumber(
"020221327"
per.setTel(tel);
per.setFax(fax);
List<String> friendList=
ArrayList<String>();
friendList.add(
"A1"
"A2"
"A3"
Friends friend1=
Friends();
friend1.setName(friendList);
per.setFriend(friend1);
Animal dog=
Animal(
"Dolly"
,0)!important; font-size:1em!important; background-color:inherit">2
Animal cat=
"Ketty"
List<Animal> petList=
ArrayList<Animal>();
petList.add(dog);
petList.add(cat);
Pets pet=
Pets();
pet.setAnimalList(petList);
per.setPet(pet);
//java对象转换成xml
String xml=XmlUtil.toXml(per);
System.out.println(
"xml==="
+xml);
7.[代码]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>
</code>
<number>
137280968
</number>
</telphone>
<faxphone>
020221327
</faxphone>
<friends>
<name>A1</name>
<name>A2</name>
<name>A3</name>
</friends>
<pets>
<pet>
<name>doly</name>
<age>
</age>
</pet>
<name>Ketty</name>
</pets>
</person>
猜你在找的XML相关文章