Bài 28: XML Parser trong Android

Leave a Comment
1) Biết cách tạo XML (tất nhiên rất nhiều bạn đã biết nó từ lâu)
2) Biết cách sử dụng XML
3) Biết cách duyệt XML bằng kỹ thuật DOM
4) Biết cách duyệt XML bằng kỹ thuật SAX.
- Dĩ nhiên  bạn phải thực hiện được 2 bài ví dụ bên dưới thì mới có thể nói là hiểu về XML trong Android.
-Extensible Markup Language (XML): Các bạn xem chi tiết tại http://www.w3schools.com/xml/default.asp

———————————————————————————————————–
A)Kỹ thuật dùng DOM:
- DOM (Document Object Model ): Cache all – cơ chế của nó là đọc toàn bộ nội dung tập tin XML vào bộ nhớ (do đó nếu XML lớn thì làm chậm chương trình và có thể phung phí bộ nhớ vì không phải lúc nào ta cũng muốn đọc hết nội dung XML).
- DOM cho phép lấy: NodeLists, .getElementsByTagName() , .item(i), .getName() , .getValue() , .getFirstChild() , .getAttributes(),…
Ta lướt qua ví dụ này (cần dùng DOM để đọc XML bên dưới lên EditText):
29_xml_0
- Ta đi vào các bước cụ thể để đọc được tập tin XML bằng DOM như sau:
——————————————————————————————————————–
Bước 1: 
Để có thể sử dụng được kỹ thuật DOM trong Android, chúng ta import các thư viện sau (kể cả những thư viện để bắt lỗi):
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
- Các bạn chú ý là trong quá trình viết code trong Eclipse, nó sẽ tự import tất cả các thư viện trên giùm ta (Bạn không phải gõ import dòng nào cả).
Bước 2:
Tạo đối tượng DocumentBuilder (builder ) bằng lệnh dưới đây:
DocumentBuilderFactory fac=DocumentBuilderFactory.newInstance();
 DocumentBuilder builder=fac.newDocumentBuilder();
Bước 3:
Tạo FileInputStream từ tập tin XML nguồn (ở đây Tôi để XML nguồn trong SD Card):
String sdcard=Environment.getExternalStorageDirectory().getAbsolutePath();
 String xmlfile=sdcard+"/employee.xml";
 FileInputStream fIn=new FileInputStream(xmlfile);
Bước 4:
Dùng phương thức parse của đối tượng builder ở bước 2 để tạo Document
Document doc=builder.parse(fIn);
Bước 5:
Ta dựa vào đối tược doc được tạo ra ở bước 4 để duyệt từng node trong XML:
Element root= doc.getDocumentElement(); //lấy tag Root ra
 NodeList list= root.getChildNodes();// lấy toàn bộ node con của Root
 String datashow="";//biến để lưu thông tin
 for(int i=0;i<list.getLength();i++) // duyệt từ node đầu tiên cho tới node cuối cùng
 {
 Node node=list.item(i);// mỗi lần duyệt thì lấy ra 1 node
 if(node instanceof Element) // kiểm tra xem node đó có phải là Element hay không, vì ta dựa vào element để lấy dữ liệu bên trong
 {
 Element employee=(Element) node;// lấy được tag Employee ra
 String id=employee.getAttribute("id");//id là thuộc tính của tag Employee
 String title=employee.getAttribute("title");//title là thuộc tính của tag employee
 NodeList listChild= employee.getElementsByTagName("name");// lấy tag name bên trong của tag Employee
 String name=listChild.item(0).getTextContent();//lấy nội dung của tag name
 listChild=employee.getElementsByTagName("phone");// lấy tag phone bên trong của tag Employee
String phone=listChild.item(0).getTextContent();// lấy nội dung của tag phone</span>
 datashow+=id+"-"+title+"-"+name+"-"+phone+"\n---------\n";//lưu vào biến lưu thông tin
 }
 }
//ta dựa vào datashow để hiển thị lên giao diện
- Bạn có thể tải code mẫu ở đây:http://www.mediafire.com/download/04q4rlg33nmrina/LearnXMLParser_DOM.rar (Tôi có đính kèm employee.xml trong project này, bạn chỉ việc kéo thả nó vào SD Card trong máy của bạn là ok).

0 nhận xét:

Đăng nhận xét