Android - 使用XmlPullParser解析从服务器得到的Xml数据
2017-02-24 20:30
656 查看
效果图如下:
下面是代码:
package com.example.diy_network; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.util.Xml; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private Person person; private List<Person> persons = new ArrayList<>(); private ListView lv_mian_listView; private MyAdapter myAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv_mian_listView = (ListView) findViewById(R.id.lv_mian_ListView); myAdapter = new MyAdapter(); lv_mian_listView.setAdapter(myAdapter); } public void getData(View view) { new MyTask().execute(); } class MyTask extends AsyncTask{ @Override protected Object doInBackground(Object[] params) { try { URL url = new URL("http://localhost/Pazz/xxxx.action"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setReadTimeout(5000); int code = urlConnection.getResponseCode(); if (code == 200) { InputStream is = urlConnection.getInputStream(); XmlPullParser xpp = Xml.newPullParser(); xpp.setInput(is, "UTF-8"); int type = xpp.getEventType(); while (type != xpp.END_DOCUMENT) { switch (type) { case XmlPullParser.START_TAG: //获取开始标签的名字 String startTagName = xpp.getName(); if ("person".equals(startTagName)) { person = new Person(); //获取name属性值 int pid = Integer.parseInt(xpp.getAttributeValue(0)); person.setPid(pid); } else if ("page".equals(startTagName)) { //获取sex的文本值 int page = Integer.parseInt(xpp.nextText()); person.setPage(page); } else if ("pname".equals(startTagName)) { //获取sex的文本值 String pname = xpp.nextText(); person.setPname(pname); } break; case XmlPullParser.END_TAG: //获取到结束标签的名字 String endTagName = xpp.getName(); if ("person".equals(endTagName)) { persons.add(person); } break; } type = xpp.next(); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); lv_mian_listView.setAdapter(myAdapter); } } class MyAdapter extends BaseAdapter { @Override public int getCount() { return persons.size(); } @Override public Object getItem(int position) { return persons.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { LinearLayout linearLayout = new LinearLayout(MainActivity.this); linearLayout.setGravity(Gravity.CENTER); TextView tv1 = new TextView(MainActivity.this); tv1.setWidth(300); tv1.setText(""+persons.get(position).getPid()); TextView tv2 = new TextView(MainActivity.this); tv2.setWidth(300); tv2.setText(""+persons.get(position).getPname()); TextView tv3 = new TextView(MainActivity.this); tv3.setWidth(200); tv3.setText(""+persons.get(position).getPage()); linearLayout.addView(tv1); linearLayout.addView(tv2); linearLayout.addView(tv3); return linearLayout; } } }
下面是布局文件:
package com.example.diy_network; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.util.Xml; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private Person person; private List<Person> persons = new ArrayList<>(); private ListView lv_mian_listView; private MyAdapter myAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv_mian_listView = (ListView) findViewById(R.id.lv_mian_ListView); myAdapter = new MyAdapter(); lv_mian_listView.setAdapter(myAdapter); } public void getData(View view) { new MyTask().execute(); } class MyTask extends AsyncTask{ @Override protected Object doInBackground(Object[] params) { try { URL url = new URL("http://localhost/Pazz/xxxx.action"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setReadTimeout(5000); int code = urlConnection.getResponseCode(); if (code == 200) { InputStream is = urlConnection.getInputStream(); XmlPullParser xpp = Xml.newPullParser(); xpp.setInput(is, "UTF-8"); int type = xpp.getEventType(); while (type != xpp.END_DOCUMENT) { switch (type) { case XmlPullParser.START_TAG: //获取开始标签的名字 String startTagName = xpp.getName(); if ("person".equals(startTagName)) { person = new Person(); //获取name属性值 int pid = Integer.parseInt(xpp.getAttributeValue(0)); person.setPid(pid); } else if ("page".equals(startTagName)) { //获取sex的文本值 int page = Integer.parseInt(xpp.nextText()); person.setPage(page); } else if ("pname".equals(startTagName)) { //获取sex的文本值 String pname = xpp.nextText(); person.setPname(pname); } break; case XmlPullParser.END_TAG: //获取到结束标签的名字 String endTagName = xpp.getName(); if ("person".equals(endTagName)) { persons.add(person); } break; } type = xpp.next(); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); lv_mian_listView.setAdapter(myAdapter); } } class MyAdapter extends BaseAdapter { @Override public int getCount() { return persons.size(); } @Override public Object getItem(int position) { return persons.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { LinearLayout linearLayout = new LinearLayout(MainActivity.this); linearLayout.setGravity(Gravity.CENTER); TextView tv1 = new TextView(MainActivity.this); tv1.setWidth(300); tv1.setText(""+persons.get(position).getPid()); TextView tv2 = new TextView(MainActivity.this); tv2.setWidth(300); tv2.setText(""+persons.get(position).getPname()); TextView tv3 = new TextView(MainActivity.this); tv3.setWidth(200); tv3.setText(""+persons.get(position).getPage()); linearLayout.addView(tv1); linearLayout.addView(tv2); linearLayout.addView(tv3); return linearLayout; } } }
相关文章推荐
- Android-通过网络获取xml文件使用pull解析得到服务器中的信息(新闻客户端)
- android使用XmlPullParser来解析XML文件
- android xml解析 XmlPullParser的使用
- android xml解析 XmlPullParser的使用
- android xml解析 XmlPullParser的使用
- android xml解析 XmlPullParser的使用
- android使用XmlPullParser来解析XML文件
- Android进阶——使用Pull解析和生成轻量级数据XML
- bak 6.android xml解析 XmlPullParser的使用.
- Android中使用xml保存数据(xml文件序列化)及使用pull解析xml文件
- bak 6.android xml解析 XmlPullParser的使用.
- android xml解析 XmlPullParser的使用
- android 解析服务器数据使用json还是xml方式
- Android使用XmlPullParser解析XML以及天气预报信息api使用
- Android 中使用XmlPullParser解析网络XML文件
- android xml解析 XmlPullParser的使用
- android 解析服务器数据使用json还是xml方式
- Android使用Http访问并解析服务器XML数据
- android xml解析 XmlPullParser的使用
- android使用XmlPullParser来解析XML文件