android Pull解析(XML解析)

来源:互联网 发布:mac自带软件哪些可以删 编辑:程序博客网 时间:2024/04/27 09:23

package com.example.domexml;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.util.Xml;
import android.view.Menu;

public class MainActivity extends Activity {
    private String nameString;
 //http://v.juhe.cn/boxoffice/rank.php?key=bbc3eb2734c8449524c3491a7b7f89d5&dtype=xml&area=CN
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  new Thread(new Runnable() {
   
   public void run() {
    try {
     HttpURLConnection con=(HttpURLConnection) new URL("http://192.168.1.103:8080/Interceptor/exportXml.action").openConnection();
        con.setConnectTimeout(5000);
        con.setRequestMethod("GET");
        con.connect();
        XmlPullParser parser=Xml.newPullParser();
       
        try {
      parser.setInput(con.getInputStream(), "UTF-8");
      int even=parser.getEventType();
      while(even!=XmlPullParser.END_DOCUMENT)
      {
       switch(even)
       {
       //开始标签
       case XmlPullParser.START_DOCUMENT:
        Log.e("shengming","shengming");
        break;
       case XmlPullParser.START_TAG:
       //获取标签的内容
        if("aa".equals(parser.getName()))
        {
        //指向下一个标签
         nameString=parser.nextText();
//         Log.e("name", ""+nameString);
        }
        //获取标签的属性值
        if("aa".equals(parser.getName()))
        {
         nameString=parser.getAttributeValue(0);
//         Log.e("name", ""+nameString);
        }
       break;
       //结束标签
       case XmlPullParser.END_TAG:
        break;
       default:
        break;
       }
       Log.e(parser.getName(),""+nameString);
            even=parser.next();
       
      }
      
      
     } catch (XmlPullParserException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    
    } catch (MalformedURLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    
   }
  }).start();
 }

}

需要注意的是:<result/>这种标签会被解析2次。当开始解析xml时,会首先解析xml的生命。接着会对标签进行匹配。

 现在一般服务器返回的大多都是json字符串,解析相对容易的多。但是在有的地方使用xml还是比较方便的。例如:我们在做应用升级的

时候最好使用xml来解析,升级相对方便很多。而json主要方便在于对实时的数据返回较为方便。

 

 

 

 

 

 

 

 

0 0