Bước 1: Tạo project mới, tạo file xml dữ liệu để thực hành
– Sau khi tạo project mới, bạn chuyển chế độ view thư mục về dạng Project
Bước 2: Soạn nội dung file xml dữ liệu
<?xml version="1.0" encoding="utf-8" ?>
<products>
<product>
<name>Điện thoại</name>
<price>300000</price>
</product>
<product>
<name>Máy tính</name>
<price>100000</price>
</product>
<product>
<name>Tivi</name>
<price>5000000</price>
</product>
</products>
Bước 3: Tạo file DTO để map dữ liệu khi đọc được
public class ProductDTO {
String name;
int price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
// viết phương thức toString cho đối tượng
// để dùng cho trường hợp sử dụng ArrayAdapter
public String toString(){
return "Name: " + this.name + ", Price: " + this.price;
}
}
Bước 4: Tạo file ProductLoader để load dữ liệu
public class ProductLoader {
List<ProductDTO> productDTOList = new ArrayList<ProductDTO>();
ProductDTO productDTO;
String textContent;
public List<ProductDTO> getProductDTOList(InputStream inputStream) {
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
// truyền nguồn dữ liệu
parser.setInput(inputStream, null);
// xác định event type
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
// viết code xử lý ở đây
String tagName = parser.getName();
Log.d("zzzzz", "Tag name = " + tagName +
", Độ sâu của thẻ = " + parser.getDepth() + ", event = " + eventType);
switch (eventType) {
case XmlPullParser.START_TAG:
// bắt đầu vào 1 thẻ
if (tagName.equalsIgnoreCase("product")) {
productDTO = new ProductDTO();
}
break;
case XmlPullParser.TEXT:
textContent = parser.getText();
break;
case XmlPullParser.END_TAG:
if(productDTO != null){
if(tagName.equalsIgnoreCase("product"))
productDTOList.add(productDTO);
else if (tagName.equalsIgnoreCase("name"))
productDTO.setName( textContent );
else if (tagName.equalsIgnoreCase("price"))
productDTO.setPrice( Integer.parseInt(textContent) );
}
break;
default:
Log.d("zzzz", "eventType khác: " + eventType + ", tag = " + tagName);
break;
}
// viết lệnh chuyển event type để vòng lặp không bị treo
// để ở cuối cùng của lệnh while
eventType = parser.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return productDTOList;
}
}
Bước 5: Trong activity viết code lấy dữ liệu ghi ra log
List<ProductDTO> list = null;
ProductLoader loader = new ProductLoader();
try {
InputStream inputStream = getAssets().open("products.xml");
list = loader.getProductDTOList( inputStream );
for(int i = 0; i< list.size(); i++){
Log.d("zzz", "San pham: " + list.get(i).toString() );
}
} catch (IOException e) {
e.printStackTrace();
}
Bước 6: Chạy thử chương trình và xem log.
Ở activity đã lấy được danh sách dữ liệu thì bạn có thể tạo adapter để hiển thị lên listview