Android学习第十五天----pull解析
pull解析在android中是一个很重要的解析xml工具,相对其dom还有sax,这个的重要性是不言而喻的。
pull解析可以这样用,在res资源目录中创建raw目录,然后在里面创建一个文件
1 <?xml version="1.0" encoding="utf-8"?> 2 <books> 3 <book id='1'> 4 <name>java精通11</name> 5 <price>35.4</price> 6 </book> 7 <book id='2'> 8 <name>php精通22</name> 9 <price>97</price> 10 </book> 11 <book id='3'> 12 <name>oracle管理33</name> 13 <price>47.5</price> 14 </book> 15 </books>
MVC模式,创建一个实体类的
package cn.core.entity; public class Books { private Integer bookId; private String bookName; private float bookPrice; public Integer getBookId() { return bookId; } public void setBookId(Integer bookId) { this.bookId = bookId; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public float getBookPrice() { return bookPrice; } public void setBookPrice(float bookPrice) { this.bookPrice = bookPrice; } }
然后是控制层的代码:
package cn.core.service; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import android.util.Xml; import cn.core.entity.Books; public class FileService { public static List<Books> getPrase(InputStream is) { List<Books> data = null; Books book = null; XmlPullParser xpp = Xml.newPullParser(); try { xpp.setInput(is, "utf-8"); int eventType = xpp.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_DOCUMENT : data = new ArrayList<Books>(); break; case XmlPullParser.START_TAG : if ("book".equals(xpp.getName())) { book = new Books(); book.setBookId(Integer.parseInt(xpp .getAttributeValue(0))); } if ("name".equals(xpp.getName())) { book.setBookName(xpp.nextText()); } if ("price".equals(xpp.getName())) { book.setBookPrice(Float.parseFloat((xpp.nextText()))); } break; case XmlPullParser.END_TAG : if ("book".equals(xpp.getName())) { data.add(book); book = null; } break; } eventType = xpp.next(); } } catch (XmlPullParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return data; } }
然后activity中
package cn.core.test; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; import cn.core.entity.Books; import cn.core.service.FileService; public class MainActivity extends Activity { private List<String> mdata = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); InputStream is = getResources().openRawResource(R.raw.books); mdata = new ArrayList<String>(); List<Books> list = FileService.getPrase(is); for (Books book : list) { mdata.add(book.getBookId() + "---" + book.getBookName() + "--" + book.getBookPrice()); } ListView listView = (ListView) findViewById(R.id.listView1); listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mdata)); } }