标签:
下面介绍的是在Android Studio中的使用
Android Studio中目前支持的Xstream最高版本是xstream-1.4.7.jar,我是直接将jar包放到libs中使用的,因为我尝试在build.gradle中complie,但是编译的时候还是不通过。
我使用的是okhttp的client。
下面介绍的是项目开发中从网络获取xml文件并解析成javaBean的方法。
1.网络服务器中的xml文件
<person name="johnson"> <firstname>Joe</firstname> <lastname>Walnes</lastname> <phone> <phoneno>0107654321</phoneno> </phone> <phone> <phoneno>13800008888</phoneno> </phone> </person>
2. javaBean
//设置Person类在xml中的别名
@XStreamAlias("person")
public class Person {
//将name设置为XML person字段的 attribute
@XStreamAsAttribute()
private String firstname;
private String lastname;
//该变量不是xml中的一个字段,应去掉
@XStreamImplicit()
private List<Phone> phone = new ArrayList<Phone>();
@Override
public String toString() {
return "Person{" +
"firstname=‘" + firstname + ‘\‘‘ +
", lastname=‘" + lastname + ‘\‘‘ +
‘}‘;
}
public List<Phone> getPhoneno() {
return phone;
}
public void setPhoneno(List<Phone> phone) {
this.phone = phone;
}
class Phone{
String phoneno;
@Override
public String toString() {
return "Phone{" +
"phoneno=" + phoneno +
‘}‘;
}
}
}
3.使用
public void test() { OkHttpClient okHttpClient = new OkHttpClient();//定义client Request request = new Request.Builder().url("http://192.168.1.100:8080/test/test.xml").build();//定义request okhttp3.Call call = okHttpClient.newCall(request);//用client使用call call.enqueue(new okhttp3.Callback() {//异步请求网络数据 @Override public void onFailure(okhttp3.Call call, IOException e) {//请求失败的情况 System.out.println("fail:"); e.printStackTrace(); } @Override public void onResponse(okhttp3.Call call, okhttp3.Response response) throws IOException {//请求成功的情况 XStream xStream = new XStream(new DomDriver("UTF-8"));
//对指定的类使用Annotations 进行序列化,这步非常关键 xStream.processAnnotations(Person.class); if (response.isSuccessful()) { String string = response.body().string(); Person person = (Person) xStream.fromXML(string); System.out.println(person.toString()+person.getPhoneno().toString());
}
}
});
}
其实也就这步关键而已,其他的不重要:
//对指定的类使用Annotations 进行序列化
xstream.processAnnotations(Person.class);
运行结果:
Person{firstname=‘Joe‘, lastname=‘Walnes‘}[Phone{phoneno=0107654321}, Phone{phoneno=13800008888}]
标签:
原文地址:http://www.cnblogs.com/johnsonwei/p/5778406.html