Học Lập trình Android cung cấp ba loại trình phân tích cú pháp XML là DOM, SAX và XMLPullParser . Trong số tất cả chúng android khuyên dùng XMLPullParser vì nó hiệu quả và dễ sử dụng. Vì vậy, chúng ta sẽ sử dụng XMLPullParser để phân tích cú pháp XML.
Bước đầu tiên là xác định các trường trong dữ liệu XML mà bạn quan tâm. Ví dụ: Trong XML được đưa ra dưới đây, chúng tôi chỉ quan tâm đến nhiệt độ.
<?xml version="1.0"?> <current> <city id="2643743" name="London"> <coord lon="-0.12574" lat="51.50853"/> <country>GB</country> <sun rise="2013-10-08T06:13:56" set="2013-10-08T17:21:45"/> </city> <temperature value="289.54" min="289.15" max="290.15" unit="kelvin"/> <humidity value="77" unit="%"/> <pressure value="1025" unit="hPa"/> </current>
XML - Các phần tử
Tệp xml bao gồm nhiều thành phần. Đây là bảng xác định các thành phần của một tệp XML và mô tả của chúng.| Sr.No | Thành phần & mô tả |
|---|---|
| 1 | Prolog Một tệp XML bắt đầu bằng phần mở đầu. Dòng đầu tiên chứa thông tin về một tệp là prolog |
| 2 | Sự kiện Một tệp XML có nhiều sự kiện. Sự kiện có thể là như thế này. Bắt đầu tài liệu, Tài liệu kết thúc, Bắt đầu từ khóa, Kết thúc thẻ và Văn bản, v.v. |
| 3 | Bản văn Ngoài các thẻ và sự kiện và tệp xml cũng chứa văn bản đơn giản. Chẳng hạn như GB là văn bản trong thẻ quốc gia. |
| 4 | Thuộc tính Thuộc tính là các thuộc tính bổ sung của thẻ chẳng hạn như giá trị, v.v. |
Trong bước tiếp theo, chúng ta sẽ tạo đối tượng XMLPullParser, nhưng để tạo ra chúng ta đầu tiên sẽ tạo đối tượng XmlPullParserFactory và sau đó gọi phương thức newPullParser () của nó để tạo XMLPullParser. Cú pháp của nó được đưa ra dưới đây
private XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
private XmlPullParser myparser = xmlFactoryObject.newPullParser();
Bước tiếp theo liên quan đến việc xác định tệp cho XmlPullParser có chứa XML. Nó có thể là một tập tin hoặc có thể là một Stream. Trong trường hợp của chúng tôi nó là một cú pháp stream.Its được đưa ra dưới đây
myparser.setInput(stream, null);
Bước cuối cùng là phân tích cú pháp XML. Một tệp XML bao gồm các sự kiện, Tên, Văn bản, Thuộc tínhValue vv Vì vậy, XMLPullParser có một hàm riêng biệt để phân tích từng thành phần của tệp XML. Cú pháp của nó được đưa ra dưới đây
int event = myParser.getEventType(); while (event != XmlPullParser.END_DOCUMENT) { String name=myParser.getName(); switch (event){ case XmlPullParser.START_TAG: break; case XmlPullParser.END_TAG: if(name.equals("temperature")){ temperature = myParser.getAttributeValue(null,"value"); } break; } event = myParser.next(); }Phương thức getEventType trả về kiểu sự kiện xảy ra. Ví dụ: Tài liệu bắt đầu, bắt đầu từ khóa vv Phương thức getName trả về tên của thẻ và vì chúng ta chỉ quan tâm đến nhiệt độ, vì vậy chúng ta chỉ cần kiểm tra trong câu lệnh có điều kiện là nếu chúng ta có thẻ nhiệt độ, chúng ta gọi phương thức getAttributeValue trả về cho chúng ta giá trị của thẻ nhiệt độ.
Ngoài các phương thức này, còn có các phương thức khác được lớp này cung cấp để phân tích cú pháp các tệp XML tốt hơn. Những phương pháp này được liệt kê dưới đây
| Sr.No | Phương pháp & mô tả |
|---|---|
| 1 | getAttributeCount () Phương thức này chỉ trả về số thuộc tính của thẻ bắt đầu hiện tại |
| 2 | getAttributeName (chỉ mục int) Phương thức này trả về tên của thuộc tính được chỉ định bởi giá trị chỉ mục |
| 3 | getColumnNumber () Phương thức này trả về trả về số cột hiện tại, bắt đầu từ 0. |
| 4 | getDepth () Phương thức này trả về Trả về độ sâu hiện tại của phần tử. |
| 5 | getLineNumber () Trả về số dòng hiện tại, bắt đầu từ 1. |
| 6 | getNamespace () Phương thức này trả về URI không gian tên của phần tử hiện tại. |
| 7 | getPrefix () Phương thức này trả về tiền tố của phần tử hiện tại |
| số 8 | getName () Phương thức này trả về tên của thẻ |
| 9 | getText () Phương thức này trả về văn bản cho phần tử cụ thể đó |
| 10 | isWhitespace () Phương pháp này kiểm tra xem sự kiện TEXT hiện tại chỉ chứa các ký tự khoảng trắng. |
Thí dụ
Đây là một ví dụ minh họa việc sử dụng XML DOM Parser. Nó tạo ra một ứng dụng cơ bản cho phép bạn phân tích cú pháp XML.Để thử nghiệm với ví dụ này, bạn có thể chạy nó trên một thiết bị thực tế hoặc trong một trình giả lập.
| Các bước | Sự miêu tả |
|---|---|
| 1 | Bạn sẽ sử dụng Android studio để tạo ứng dụng Android theo gói com.example.sairamkrishna.myapplication. |
| 2 | Sửa đổi tệp src / MainActivity.java để thêm mã cần thiết. |
| 3 | Sửa đổi res / layout / activity_main để thêm các thành phần XML tương ứng |
| 4 | Tạo một tệp XML mới bên dưới Assets Folder / file.xml |
| 5 | Sửa đổi Android Manifest.xml để thêm quyền internet cần thiết |
| 6 | Chạy ứng dụng và chọn thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả |
package com.example.sairamkrishna.myapplication; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends Activity { TextView tv1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv1=(TextView)findViewById(R.id.textView1); try { InputStream is = getAssets().open("file.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(is); Element element=doc.getDocumentElement(); element.normalize(); NodeList nList = doc.getElementsByTagName("employee"); for (int i=0; i<nList.getLength(); i++) { Node node = nList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element element2 = (Element) node; tv1.setText(tv1.getText()+"\nName : " + getValue("name", element2)+"\n"); tv1.setText(tv1.getText()+"Surname : " + getValue("surname", element2)+"\n"); tv1.setText(tv1.getText()+"-----------------------"); } } } catch (Exception e) {e.printStackTrace();} } private static String getValue(String tag, Element element) { NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes(); Node node = nodeList.item(0); return node.getNodeValue(); } }Sau đây là nội dung của Assets / file.xml .
<?xml version="1.0"?> <records> <employee> <name>Sairamkrishna</name> <surname>Mammahe</surname> <salary>50000</salary> </employee> <employee> <name>Gopal </name> <surname>Varma</surname> <salary>60000</salary> </employee> <employee> <name>Raja</name> <surname>Hr</surname> <salary>70000</salary> </employee> </records>Sau đây là nội dung sửa đổi của xml res / layout / activity_main.xml .
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>Sau đây là nội dung của tệp Android Manifest.xml .
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sairamkrishna.myapplication" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Hãy thử chạy ứng dụng của chúng tôi, chúng tôi vừa sửa đổi. Tôi cho rằng bạn đã tạo AVD của mình trong khi thiết lập môi trường.
Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào biểu tượng Chạy từ thanh công cụ.
Android studio cài đặt ứng dụng trên AVD của bạn và khởi động ứng dụng và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, ứng dụng sẽ hiển thị cửa sổ Trình mô phỏng sau
![]() |
| ảnh minh họa |

Không có nhận xét nào:
Đăng nhận xét