1
ANDROID NÂNG CAOANDROID NÂNG CAO
Bài 8:
JSON & XML ParsingJSON & XML Parsing
2
Nội dung bài học
● JSON Parsing.
● XML Parsing.
3
Nội dung bài học
● JSON Parsing.
● XML Parsing.
4
JSON Parsing
● Hiện nay rất nhiều Web service cung cấp dữ liệu
dưới định dạng JSON. Do đó chúng ta cần
chuyển chuỗi kí t...
5
JSON Parsing
● JSONObject:
● JSONObject là class đại điện cho một đối tượng
trong chuỗi JSON.
● Một đối tượng trong chuỗ...
6
JSON Parsing
● JSONObject:
● Danh sách các phương thức getter thường sử dụng:
– getDouble
– getInt
– getLong
– getString...
7
JSON Parsing
● JSONArray:
● Là class đại diện cho array trong chuỗi JSON.
● Array trong chuỗi JSON là một đối tượng được...
8
JSON Parsing
● Ví dụ:
● Chúng ta cần viết chương trình để parse đoạn JSON
sau đây:
[
{
“name”:”Nguyen Van A”,
“old”:”17”...
9
JSON Parsing
● Các bước để parse như sau:
1.Tạo JSONArray từ chuỗi JSON đã cho.
2. Sử dụng vòng lặp for để xử lý cho các...
10
JSON Parsing
● Đoạn chương trình mẫu như sau:
import org.json.JSONArray;
import org.json.JSONObject;
・・・
try {
   JSONA...
11
JSON Parsing
● Xem thêm:
● Jackson JSON library: http://jackson.codehaus.org
12
Nội dung bài học
● JSON Parsing.
● XML Parsing.
13
XML Parsing
● Giới thiệu các phương pháp parse XML.
● DOM
● SAX
● XmlPull
14
XML Parsing
● Giới thiệu các phương pháp parse XML.
● DOM
● SAX
● XmlPull
15
XML Parsing
● Giới thiệu các phương pháp parse XML
● DOM (Document Object Model)
– Sử dụng cấu trúc cây, lưu trữ trên b...
16
XML Parsing
● Giới thiệu các phương pháp parse XML
● SAX (Simple API for XML)
– SAX dựa trên các sự kiện khi parse.
– C...
17
XML Parsing
● Giới thiệu các phương pháp parse XML
● XMLPullParser (XPP)
– XPP dựa trên mô hình pull(khi nào cần mới pa...
18
XML Parsing
● Giới thiệu các phương pháp parse XML
DOM SAX XMLPullParser
Cấu trúc parser Cấu trúc cây Dựa vào kiểu sự
k...
19
XML Parsing
● XML file dùng để demo (sample.xml) có nội
dung:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<node>Node ...
20
XML Parsing
● Giới thiệu các phương pháp parse XML
● DOM
● SAX
● XmlPullParser
21
XML Parsing
● DOM:
● Để parse XML sử dụng DOM, tiến hành các bước
sau:
– Get đối tượng Document từ XML data:
● Tạo đối ...
22
XML Parsing
● DOM:
InputStream in = null;
try {
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance()...
23
XML Parsing
● Giới thiệu các phương pháp parse XML
● DOM
● SAX
● XmlPullParser
24
XML Parsing
● SAX
● Các bước thực hiện:
1.Tạo event handler class, lớp này nhận callback từ
SAXParser.
2. Tạo đối tượng...
25
XML Parsing
● SAX
● Các bước thực hiện:
1.Tạo event handler class, lớp này nhận callback từ
SAXParser:
 Tạo class thừa...
26
XML Parsing
● SAX class SaxHandler extends DefaultHandler {
//Tag starting flag
boolean isNode;
@Override
public void s...
27
XML Parsing
● SAX
// Create factory of parse
SAXParserFactory saxParaser = SAXParserFactory.newInstance();
Try {
InputS...
28
XML Parsing
● Giới thiệu các phương pháp parse XML.
● DOM
● SAX
● XmlPullParser
29
XML Parsing
● XmlPullParser:
● Các bước để parse xml bằng XmlPullParser:
– Tạo đối tượng XmlPullParser.
– Truyền nội du...
30
XML Parsing
● XmlPullParser:
InputStream in = null;
try {
// Get stream of analyzing target
in = getAssets().open("samp...
Nguyen Huu Phuoc, MEng.
●  Blog:http://folami.nghelong.com
●  Website http://phuocnh.nghelong.com
Upcoming SlideShare
Loading in...5
×

Android Nâng cao-Bài 8-JSON & XML Parsing

3,365

Published on

Published in: Technology
1 Comment
8 Likes
Statistics
Notes
No Downloads
Views
Total Views
3,365
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
1
Likes
8
Embeds 0
No embeds

No notes for slide

Android Nâng cao-Bài 8-JSON & XML Parsing

  1. 1. 1 ANDROID NÂNG CAOANDROID NÂNG CAO Bài 8: JSON & XML ParsingJSON & XML Parsing
  2. 2. 2 Nội dung bài học ● JSON Parsing. ● XML Parsing.
  3. 3. 3 Nội dung bài học ● JSON Parsing. ● XML Parsing.
  4. 4. 4 JSON Parsing ● Hiện nay rất nhiều Web service cung cấp dữ liệu dưới định dạng JSON. Do đó chúng ta cần chuyển chuỗi kí tự dưới định dạng JSON thành các đối tượng Java để có thể sử dụng trong chương trình. Quá trình này gọi là JSON parsing. ● Android cung cấp package org.json trong đó có 2 class chính JSONObject và JSONArray giúp chúng ta thực hiện JSON parsing dễ dàng.
  5. 5. 5 JSON Parsing ● JSONObject: ● JSONObject là class đại điện cho một đối tượng trong chuỗi JSON. ● Một đối tượng trong chuỗi JSON được bọc trong cặp dấu ngoặc nhọn “{“,”}”. ● Để tạo ra đối tượng JSONObject chúng ta sử dụng phương thức khởi tạo và truyền chuỗi JSON biểu diễn đối tượng đó vào tham số thứ nhất. ● JSONObject cung cấp các phương thức getter để chúng ta truy xuất đến các thuộc tính của nó: JSONObject#getXXX(String key)
  6. 6. 6 JSON Parsing ● JSONObject: ● Danh sách các phương thức getter thường sử dụng: – getDouble – getInt – getLong – getString – get – getBoolean – getJSONArray – getJSONObjects
  7. 7. 7 JSON Parsing ● JSONArray: ● Là class đại diện cho array trong chuỗi JSON. ● Array trong chuỗi JSON là một đối tượng được bọc trong cặp ngoặc vuông “[“, “]”. ● Để tạo ra đối tượng JSONArray chúng ta sử dụng phương thức khởi tạo và truyền chuỗi JSON biểu diễn nó vào tham số thứ nhất. ● JSONArray cũng cung cấp các phương thức getter giống như JSONObject để truy xuất giá trị các thuộc tính.
  8. 8. 8 JSON Parsing ● Ví dụ: ● Chúng ta cần viết chương trình để parse đoạn JSON sau đây: [ { “name”:”Nguyen Van A”, “old”:”17” }, { “name”:”Nguyen Van B”, “old”:”80” } ]
  9. 9. 9 JSON Parsing ● Các bước để parse như sau: 1.Tạo JSONArray từ chuỗi JSON đã cho. 2. Sử dụng vòng lặp for để xử lý cho các JSONObject bên trong. 3. Lấy JSONObject từ JSONArray qua các bước lặp. 4.Sử dụng phương thức getter phù hợp để lấy giá trị.
  10. 10. 10 JSON Parsing ● Đoạn chương trình mẫu như sau: import org.json.JSONArray; import org.json.JSONObject; ・・・ try {    JSONArray objects = new JSONArray(jsonstring); for (int i = 0; i < objects.length(); i++) { JSONObject person = objects.getJSONObject(i); Log.d(“JSON”,“name:" + person.getString(“name") ); Log.d(“JSON”,“old:" + person.getString(“old") ); Log.d(“JSON”,"======================"); } } catch (Exception e) { } ・・・
  11. 11. 11 JSON Parsing ● Xem thêm: ● Jackson JSON library: http://jackson.codehaus.org
  12. 12. 12 Nội dung bài học ● JSON Parsing. ● XML Parsing.
  13. 13. 13 XML Parsing ● Giới thiệu các phương pháp parse XML. ● DOM ● SAX ● XmlPull
  14. 14. 14 XML Parsing ● Giới thiệu các phương pháp parse XML. ● DOM ● SAX ● XmlPull
  15. 15. 15 XML Parsing ● Giới thiệu các phương pháp parse XML ● DOM (Document Object Model) – Sử dụng cấu trúc cây, lưu trữ trên bộ nhớ heap. – Tất cả nội dung của tập tin cần parse được chứa trong bộ nhớ và sau khi parse xong chúng ta có thể truy xuất đến bất kỳ một phần tử vào bất cứ lúc nào. – Do phải lưu nội dung của tập tin XML trên bộ nhớ nên đòi hỏi bộ nhớ phải lớn đây là một hạn chế trên các thiết bị di động. – Do đó phương pháp này chỉ phù hợp cho các trường hợp tập tin XML cần parse có dung lượng nhỏ.
  16. 16. 16 XML Parsing ● Giới thiệu các phương pháp parse XML ● SAX (Simple API for XML) – SAX dựa trên các sự kiện khi parse. – Chương trình parse (parser) đọc tập tin XML cần parse từ đầu tập tin và cứ mỗi lần một sự kiện như mở, đóng một tag thì callback function trong chương trình được gọi để thực thi. – Phía chương trình không điều khiển được việc đọc tập tin XML như DOM. – Phương pháp này ít tốn vùng nhớ hơn DOM. – Trong Android có hai cách sử dụng SAX: cách thông thường hay cách sử dụng wrapper.
  17. 17. 17 XML Parsing ● Giới thiệu các phương pháp parse XML ● XMLPullParser (XPP) – XPP dựa trên mô hình pull(khi nào cần mới parse, có thể điều khiển quá trình parse). XPP giống như StAX như trong Java. Android không hỗ trợ StAX mà hỗ trợ XPP. – Chương trình parse (parser) đọc tập tin XML cần parse từ đầu tập tin và quá trình parse có thể điều khiển từ chương trình.Thông tin có thể lấy từ parser nếu cần.. – Do quá trình parse có thể điều khiển từ phía chương trình cho nên việc parse có thể dừng lại sớm, tiết kiệm thời gian.
  18. 18. 18 XML Parsing ● Giới thiệu các phương pháp parse XML DOM SAX XMLPullParser Cấu trúc parser Cấu trúc cây Dựa vào kiểu sự kiện (không điều khiển được) Dựa vào kiểu sự kiện (điều khiển được) Truy xuất phần tử Truy xuất bất kì Truy xuất tuần tự Truy xuất tuần tự Lấy thông tin phần tử Truy xuất cây DOM Qua hàm callback Truy xuất qua vòng lặp Ghi vào tập tin Có thể Không thể Có thể Chi phí bộ nhớ Nhiều Ít nhất Ít Dễ sử dụng Dễ Khó Dễ
  19. 19. 19 XML Parsing ● XML file dùng để demo (sample.xml) có nội dung: <?xml version="1.0" encoding="UTF-8"?> <root> <node>Node Value</node> </root>
  20. 20. 20 XML Parsing ● Giới thiệu các phương pháp parse XML ● DOM ● SAX ● XmlPullParser
  21. 21. 21 XML Parsing ● DOM: ● Để parse XML sử dụng DOM, tiến hành các bước sau: – Get đối tượng Document từ XML data: ● Tạo đối tượng DocumentBuilderFactory ● Tạo đối tượng DOMParser ● Phân tích XML và xây dựng DOM tree. – Truy xuất phần tử gốc của cây. – Truy xuất phần tử bất kỳ trong cây. – Truy xuất dữ liệu đang lưu trữ trong nút của cây.
  22. 22. 22 XML Parsing ● DOM: InputStream in = null; try { DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbfactory.newDocumentBuilder(); in = getAssets().open("sample.xml"); Document doc = builder.parse(in); //Truy xuat phan tu goc <root> Element root = doc.getDocumentElement(); // Get <node> NodeList entryList = root.getElementsByTagName("node"); //Lay nut dau tien trong danh sach cac nut <node> Element nodeElement = (Element) entryList.item(0); // Gia tri luu tru o <node> String nodevalue = nodeElement.getFirstChild().getNodeValue(); Log.v(“DOM”, nodevalue); } catch (Exception e) { //Xử lý exception }
  23. 23. 23 XML Parsing ● Giới thiệu các phương pháp parse XML ● DOM ● SAX ● XmlPullParser
  24. 24. 24 XML Parsing ● SAX ● Các bước thực hiện: 1.Tạo event handler class, lớp này nhận callback từ SAXParser. 2. Tạo đối tượng SAXParserFactory và tạo đối tượng SAXParser. 3.Set event handler tạo ở bước 1 cho SAXParser. 4.Tiến hành parse xml bằng cách gọi phương thức SAXParser#parse 5.Mỗi khi một sự kiện xảy ra nó sẽ gọi callback tương ứng trong event handler được tạo ra ở bước 1.
  25. 25. 25 XML Parsing ● SAX ● Các bước thực hiện: 1.Tạo event handler class, lớp này nhận callback từ SAXParser:  Tạo class thừa kế từ class DefaultHandler.  Hiện thực các callback tương ứng với từng sự kiện:  Start tag → startElement  End tag → endElement  Text trong 1 tag → character
  26. 26. 26 XML Parsing ● SAX class SaxHandler extends DefaultHandler { //Tag starting flag boolean isNode; @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if ("node".equals(localName)) { // Start node tag isNode= true; } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if ("node".equals(localName)) { // End node tag isNode= false; } } @Override public void characters(char[] ch, int start, int length) throws SAXException { //If node tag is started, output text string to log if (isNode) { String nodevalue = new String(ch, start, length); Log.v(“SAX”, nodevalue); } } }
  27. 27. 27 XML Parsing ● SAX // Create factory of parse SAXParserFactory saxParaser = SAXParserFactory.newInstance(); Try { InputStream in = getAssets().open("sample.xml"); /* Get parser */ SAXParser sp = saxParaser.newSAXParser(); /* Create event handler */ SaxHandler sh = new SaxHandler(); /* Pass the input data and event handler to event handler */ sp.parse(in, sh); } catch (Exception e) { Log.e(“SAX”,”Error:”,e); }
  28. 28. 28 XML Parsing ● Giới thiệu các phương pháp parse XML. ● DOM ● SAX ● XmlPullParser
  29. 29. 29 XML Parsing ● XmlPullParser: ● Các bước để parse xml bằng XmlPullParser: – Tạo đối tượng XmlPullParser. – Truyền nội dung của tập tin XML cần parse cho parser. – Lấy được các sự kiện và phân tích.
  30. 30. 30 XML Parsing ● XmlPullParser: InputStream in = null; try { // Get stream of analyzing target in = getAssets().open("sample.xml"); final XmlPullParser parser = Xml.newPullParser(); parser.setInput(new InputStreamReader(in)); parser.next(); // root tag parser.next(); // node tag String tag = parser.getName(); if ("node".equals(tag)) { parser.next(); String nodevalue = parser.getText(); Log.v(“XMLParser”, nodevalue); } } catch (Exception e) { //Xu ly exception }
  31. 31. Nguyen Huu Phuoc, MEng. ●  Blog:http://folami.nghelong.com ●  Website http://phuocnh.nghelong.com

×