码迷,mamicode.com
首页 > Web开发 > 详细

(转)获取XML和JSON

时间:2015-04-09 17:12:57      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

public class PersonService {

    public List<Person> getXmlPersons() throws Exception {
        URL url = new URL("http://192.168.1.240:8080/WebServer/persons.xml");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        int code = conn.getResponseCode();
        if (code == 200) {
            return parseXML(conn.getInputStream());        // 获取输入流, 解析
        }
        throw new NetworkErrorException("网络异常: " + code);
    }

    private List<Person> parseXML(InputStream in) throws Exception {
        XmlPullParser parser = Xml.newPullParser();
        parser.setInput(in, "UTF-8");
        
        List<Person> persons = new ArrayList<Person>();
        Person p = null;

        for (int type = parser.getEventType(); type != XmlPullParser.END_DOCUMENT; type = parser.next()) {
            if (type == XmlPullParser.START_TAG) {                // 如果遇到开始标签
                if ("person".equals(parser.getName())) {        // 开始person
                    p = new Person();                            // 创建Person
                    String id = parser.getAttributeValue(0);    // 获取id属性
                    p.setId(Integer.parseInt(id));                // 设置id
                    persons.add(p);                                // 加入集合
                } else if ("name".equals(parser.getName())) {    // 开始name
                    String name = parser.nextText();            // 获取下一个文本
                    p.setName(name);                            // 设置name
                } else if ("age".equals(parser.getName())) {    // 开始age
                    String age = parser.nextText();                // 获取下一个文本
                    p.setAge(Integer.parseInt(age));            // 设置age
                }
            } 
        }

        return persons;
    }

    public List<Person> getJsonPersons() throws Exception {
        URL url = new URL("http://192.168.1.240:8080/WebServer/persons.js");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        int code = conn.getResponseCode();
        if (code == 200) {
            return parseJSON(conn.getInputStream());
        }
        throw new NetworkErrorException("网络异常: " + code);
    }

    private List<Person> parseJSON(InputStream in) throws Exception {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        byte[] buffer = new byte[8192];
        int length;
        while ((length = in.read(buffer)) != -1) 
            out.write(buffer, 0, length);
        in.close();
        out.close();
        
        List<Person> persons = new ArrayList<Person>();
        String json = new String(out.toByteArray());
        JSONArray arr = new JSONArray(json);        // 把字符串封装成JSON数组
        for (int i = 0; i < arr.length(); i++) {    // 遍历数组
            JSONObject obj = arr.getJSONObject(i);    // 获取每个JSON对象
            Person p = new Person();
            p.setId(obj.getInt("id"));                // 获取JSON对象中的属性
            p.setName(obj.getString("name"));
            p.setAge(obj.getInt("age"));
            persons.add(p);
        }
        
        return persons;
    }

}

 

(转)获取XML和JSON

标签:

原文地址:http://www.cnblogs.com/youyu16/p/4410034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!