您的位置:首页 > Web前端 > JavaScript

pull解析(从网友把XML转换成JSON格式 容易写Bean)

2016-08-26 12:22 525 查看
###  这个是从网页上 把XML转换成JSON的网址    http://www.bejson.com/xml2json/
###  Bean跟json格式一样

###   XML网址    http://www.oschina.net/action/api/tweet_list
###  MainAcitivy

public class MainActivity extends Activity {

    private ListView lv;

    String path = "http://www.oschina.net/action/api/tweet_list";

    // 创建handler

    Handler handler = new Handler() {

        public void handleMessage(Message msg) {

            String xml = (String) msg.obj;

            xml(xml);

            System.out.println(list.get(0).getAuthorid() + "==============");

        };

    };

    private List<Tweet> list;

    private Tweets tweets;

    private Tweet tweet;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        HttpUtils httpUtils = new HttpUtils();

        httpUtils.send(HttpMethod.GET, path, new RequestCallBack<String>() {

            @Override

            public void onSuccess(ResponseInfo<String> arg0) {

                String result = arg0.result;

                Message msg = Message.obtain();

                msg.obj = result;

                handler.sendMessage(msg);

            }

            @Override

            public void onFailure(

                    com.lidroid.xutils.exception.HttpException arg0, String arg1) {

                // TODO Auto-generated method stub

            }

        });

    }

    protected void xml(String xml) {

        // 得到xml解析器

        XmlPullParser newpuParser = Xml.newPullParser();

        // 得到需要解析的输入流

        InputStream is = new ByteArrayInputStream(xml.getBytes());

        try {

            newpuParser.setInput(new InputStreamReader(is));

            // 得到事件类型

            int eventType = newpuParser.getEventType();

            // 只要文档没有结束,就一直读取

            while (eventType != XmlPullParser.END_DOCUMENT) {

                switch (eventType) {

                case XmlPullParser.START_DOCUMENT:

                    break;

                case XmlPullParser.START_TAG:

                    String tagName = newpuParser.getName();

                    if (tagName.equals("tweets")) {

                        tweets = new Tweets();

                    } else if (tagName.equals("tweet")) {

                        list = new ArrayList<Tweet>();

                        tweet = new Tweet();

                    } else if (tagName.equals("authorid")) {

                        // 得到标签里的文本

                        String nextText = newpuParser.nextText();

                        tweet.setAuthorid(nextText);

                    } else if (tagName.equals("body")) {

                        // 得到标签里的文本

                        String nextText = newpuParser.nextText();

                        tweet.setBody(nextText);

                    }

                    break;

                // 读到了结束标签

                case XmlPullParser.END_TAG:

                    // 得到结束标签的名字

                    tagName = newpuParser.getName();

                    if (tagName.equals("tweets")) {

                        // 添加到bean集合

                        list.add(tweet);

                    }

                    break;

                }

                // 得到下一个节点的类型

                eventType = newpuParser.next();

            }

        } catch (XmlPullParserException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: