加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml转为javaBean

发布时间:2020-12-16 05:59:25 所属栏目:百科 来源:网络整理
导读:1.Xstream简介; 使用限制 : JDK版本不能1.5. 虽然预处理注解是安全的,但自动侦查注解可能发生竞争条件. 特点: 简化的API; 无映射文件; 高性能,低内存占用; 整洁的XML; 不需要修改对象;支持内部私有字段,不需要setter/getter方法,final字段;非公有类,内部类;
1.Xstream简介;

使用限制: 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

1
2
3
4
5
6
7
8
9
10
"phoneNumber" 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
* 用Xstream注解的方式实现:一个标签下有多个同名标签
*@ClassName:Friends
*@date :2012-9-28 下午4:32:24
*@Description:TODO 5个name 中国,美国,俄罗斯,英国,法国
*http://blog.csdn.net/menhuanxiyou/article/details/5426765
static 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>
*/
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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!