android 解析获取来的xml

来源:互联网 发布:手机英文翻译软件 编辑:程序博客网 时间:2024/06/06 20:34

学习了有一段时间的java了,现在又在学习Android,感觉Android相对J2EE似乎要简单一点点,不知道是不是自己目前接触还不多。很久都想把当天学习的东西,晚上也点博客记录,但是一直都没有来写,今天终于下心来写。好了,不多说了,进入主题:今天学了点xml解析,其实大多数都是java的。

解析用到的google的第三方包(下载地址http://code.google.com/p/google-gson/)



protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String spec = "http://192.168.1.113:8888/persons.js";
try {
URL url = new URL(spec);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");// 设置提交的方法,此处大写
conn.setConnectTimeout(5000);// 设置超时链接时间
conn.setDoOutput(true);// 设置链接可以输出或者输入文件
conn.setDoInput(true);
int code = conn.getResponseCode();// 设置链接的返回码
while (code == 200) {
InputStream is = conn.getInputStream();
String str = read(is);// 写一个方法,读取输入流中的数据,并且转化为字符串
JSONArray jsonArray = new JSONArray(str);// 把字符串转化为JSON串
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);// 获得JSON串中JSON对象
Person person = new Person();
person.setId(jsonObject.getInt("id"));
person.setName(jsonObject.getString("name"));
person.setAge(jsonObject.getInt("age"));
System.out.println(person);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}


private String read(InputStream is) throws Exception {


ByteArrayOutputStream bos = new ByteArrayOutputStream();
int len = 0;
byte[] buffer = new byte[1024];
while ((len = is.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
byte[] data = bos.toByteArray();


return new String(data, "utf-8");
}



封装json数据的方法:在服务器中Servlet中




protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {


List<Person> list = new ArrayList<Person>();
for (int i = 0; i < 4; i++) {
Person person = new Person(i, "test" + i, i + 20);
list.add(person);
}
JSONStringer stringer = new JSONStringer();
try {
stringer.array();
for (Person person : list) {


stringer.object().key("id").value(person.getId()).key("name")
.value(person.getName()).key("age")
.value(person.getAge()).endObject();


}
stringer.endArray();
} catch (JSONException e) {
e.printStackTrace();
}
response.getOutputStream().write(stringer.toString().getBytes("UTF-8"));
response.setContentType("text/json; charset=UTF-8"); // JSON的类型为text/json


}



0 0
原创粉丝点击