获取XML和JSON

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;
    }

}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。