HomeLập trình Android nâng cao

Phân tích XML với SAX trong Android

Phân tích XML với SAX trong Android
Like Tweet Pin it Share Share Email

Giới thiệu về XML

XML (viết tắt từ tiếng Anh eXtensible Markup Language, “Ngôn ngữ Đánh dấu Mở rộng”) là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo ra các ngôn ngữ đánh dấu khác. Đây là một tập con đơn giản của SGML, có khả năng mô tả nhiều loại dữ liệu khác nhau. Mục đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kết nối với Internet. Các ngôn ngữ dựa trên XML (Ví dụ: RDF, RSS, MathML, XHTML, SVG, GML và cXML) được định nghĩa theo cách thông thường, cho phép các chương trình sửa đổi và kiểm tra hợp lệ bằng các ngôn ngữ này mà không cần có hiểu biết trước về hình thức của chúng.

Để hiểu rõ hơn các bạn đọc bài viết trên wiki nhé.

Phân tích XML trong Android

Xem thêm:

Tại sao lại cần phải phân tích XML?

screen-shot-2016-11-25-at-5-45-52-am

Như các bạn thấy ở hình trên, khi mở một file XML trên trình duyệt, thứ chúng ta nhận được là một mớ lộn xộn các ký tự. Nếu bạn không phải là người viết ra file XML đó thì chắc chắn bạn sẽ không hiểu nó muốn truyền đạt cái gì. Như vậy bạn cần phân tích nội dung trong file XML đó và đưa lên ứng dụng, hiển thị trực quan hơn cho người dùng có thể hiểu.

Với Android (Java) có 2 cách cơ bản để phân tích nội dung XMLDOMSAX. Bài này mình sẽ hướng dẫn các bạn phân tích XML xử dụng phương pháp SAX.

  • DOM: Cần phải load toàn bộ nội dung cần phân tích nên khá hao tốn tài nguyên hệ thống, nhưng ưu điểm là giải thuật xử lý đơn giản.
  • SAX: Phân tích dựa vào khái niệm sự kiện và phản hồi sự kiện (Handler) trong quá trình phân tích XML. SAX được kế thừa từ thư viện DefaultHandler.

Một số sự kiện của DefaultHandler

  1. startDocument(): Đọc thẻ gốc của XML
  2. endDocument(): Đọc thẻ đóng của XML
  3. startElement(): Đọc một thẻ bất kỳ của XML
  4. characters(): Được gọi sau khi đọc xong thẻ mở đầu
  5. endElement(): Được gọi khi duyệt đến một thẻ đóng bất kỳ.

Để hiểu rõ hơn về phương pháp SAX chúng ta cùng xem demo sau:

Ở demo này, chúng ta sẻ phân tích danh sách các bài hát Karaoke và hiển thị chúng lên ListView.

Xây dựng giao diện

activity_main.xml

Đầu tiên chúng ta xây dựng một giao diện chứa ListView hiển thị danh sách

item_baihat.xml

Sau đó xây dựng một giao diện hiển thị item custom

Lập trình Java

BaiHat.java

Định nghĩa một class Bài Hát bao gồm các thành phần như: Mã số, Tên bài hát và Ca sĩ.

HaiHatAdapter.java

Sử dụng Adapter để đổ dữ liệu từ file XML đã phân tích lên item custom mà chúng ta đã khởi tạo khi nãy

Download_XML.java

Tạo class Download XML để đọc file XML trên Internet (Sever)

PhanTich_XML.java

Tạo class phân tích XML sử dụng phương pháp SAX để phân tích file XML đã lấy được trên Sever.

MainActivity.java

Hiển thị dữ liệu đã phân tích lên ListView

Cấp quyền truy cập Internet cho ứng dụng trong Manifest

Bổ sung code dưới vào build.gradle để sử dụng Http trong Android

 

MaSo.xml

Cuối cùng là Upload file MaSo.xml lên Sever LocalHost

Các bạn lưu ý nhìn vào các thẻ trong file XML và code xử lý trong PhanTich_XML.java sẽ hiểu cách Android lấy dữ liệu như thế nào.

Chạy thử ứng dụng

demo-xml-sax-trong-android

Chúc các bạn thành công

Xem lại bài viết liên quan

Minh Nhựt
Follow me

Minh Nhựt

Quản trị viên at Nhựt Studio
Viết blog part-time trên Nhựt Studio, hiện là sinh viên, thích lập trình, yêu moto.
Blog này đơn giản là nơi chia sẽ những gì mình đang tìm hiểu. Cảm ơn các bạn đã theo dõi trong suốt thời gian qua.
Minh Nhựt
Follow me

Comments (0)

Trả lời

Your email address will not be published.