package com.example.pulls.uri; /** * Created by TYF on 2016/7/6. */ public class Person { public int _id; public String username; public String password; public String pic; public Person(int _id, String password, String pic, String username) { this._id = _id; this.password = password; this.pic = pic; this.username = username; } public Person() { } @Override public String toString() { return "Person{" + "_id=" + _id + ", username='" + username + '\'' + ", password='" + password + '\'' + ", pic='" + pic + '\'' + '}'; } }
package com.example.pulls; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.util.Xml; import android.view.View; import android.widget.Button; import android.widget.ListView; import com.example.pulls.uri.Cantant; import com.example.pulls.uri.Person; import org.xmlpull.v1.XmlPullParser; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; public class XmlActivity extends AppCompatActivity { public static final String pathxml = Cantant.ipConfig + "/persons.xml"; public static final String TAG = "XmlActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xml); } public void btGetxml(View view) { new Thread() { @Override public void run() { try { List<Person> list = parseIs(getXml(pathxml)); for (Person p : list) { Log.i(TAG, p + "--"); } } catch (Exception e) { e.printStackTrace(); } } }.start(); } //得到数据流 public InputStream getXml(String path) throws Exception { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(3000); int code = conn.getResponseCode(); if (code == HttpURLConnection.HTTP_OK) { return conn.getInputStream(); } return null; } //pull解析数据流 public List<Person> parseIs(InputStream is) throws Exception { //1.得到解析器 XmlPullParser parser = Xml.newPullParser(); //2.用什么编程解析什么流 parser.setInput(is, "utf-8"); //3.得到类型 int eventType = parser.getEventType(); //4.循环 List<Person> lists = null; Person person = null; while (XmlPullParser.END_DOCUMENT != eventType) { switch (eventType) { //如果是开始标签 case XmlPullParser.START_TAG: //如果遇到Persons.就创集合 if ("persons".equals(parser.getName())) { lists = new ArrayList<>(); } else if ("person".equals(parser.getName())) { //如果遇到person,创实体 person = new Person(); } else if ("_id".equals(parser.getName())) { //如果遇到_id,为实体_id赋值 int _id = Integer.parseInt(parser.nextText()); person._id = _id; } else if ("username".equals(parser.getName())) { String username = parser.nextText(); person.username = username; } else if ("password".equals(parser.getName())) { String password = parser.nextText(); person.password = password; } else if ("pic".equals(parser.getName())) { String pic = parser.nextText(); person.pic = pic; } break; //如果是结束标签 case XmlPullParser.END_TAG: if ("person".equals(parser.getName())) { //添加到集合 lists.add(person); person = null; } break; } //往下走 eventType = parser.next(); } return lists; } }