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ả, Android khuyên dùng XMLPullParser vì nó hiệu quả và dễ sử dụng. Vì vậy, chúng tôi sẽ sử dụng XMLPullParser để phân tích cú pháp XML.
![]() |
| Học lập trình Android |
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 việc nhận nhiệt độ.
Bước tiếp theo liên quan đến việc chỉ đị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, đó là một cú pháp stream.Its được đưa ra dưới đây
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, AttributionValue, v.v ... Vì vậy, XMLPullParser có một chức năng riêng để 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
Dưới đâ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.
Sau đây là nội dung của tệp hoạt động chính được sửa đổi MainActivity.java.
Để chạy ứng dụng từ studio Android, 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 nó và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, nó sẽ hiển thị theo cửa sổ Trình mô phỏng
<?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ử
Mộ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 tệp XML và mô tả của chúng.| Không. | Thành phần và mô tả |
|---|---|
| 1 | Prolog Một tệp XML bắt đầu bằng một prolog. 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ể như thế này. Tài liệu bắt đầu, Tài liệu kết thúc, Bắt đầu thẻ, 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à một văn bản trong thẻ quốc gia. |
| 4 | Thuộc tính Các 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. |
XML - Phân tích cú pháp
Trong bước tiếp theo, chúng ta sẽ tạo đối tượng XMLPullParser, nhưng để tạo ra, trước tiên chúng ta 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 đâyprivate XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
private XmlPullParser myparser = xmlFactoryObject.newPullParser();
Bước tiếp theo liên quan đến việc chỉ đị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, đó 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, AttributionValue, v.v ... Vì vậy, XMLPullParser có một chức năng riêng để 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ề loại sự kiện xảy ra. ví dụ: Bắt đầu tài liệu, bắt đầu thẻ, v.v ...
Phương thức getName trả về tên của thẻ và vì chúng tôi chỉ quan tâm đến nhiệt độ, vì vậy chúng tôi chỉ kiểm tra tuyên bố có điều kiện rằng nếu chúng tôi có thẻ nhiệt độ, chúng tôi gọi phương thức getAttributionValue để trả lại cho chúng tôi 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 cung cấp bởi lớp này để phân tích cú pháp các tệp XML tốt hơn. Các phương pháp này được liệt kê dưới đây
Ngoài các phương thức này, còn có các phương thức khác được cung cấp bởi lớp này để phân tích cú pháp các tệp XML tốt hơn. Các phương pháp này được liệt kê dưới đây
| Không. | Phương pháp & mô tả |
|---|---|
| 1 | getAttributionCount () Phương thức này chỉ trả về số lượng thuộc tính của thẻ bắt đầu hiện tại |
| 2 | getAttributionName (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 | lấy tên () Phương thức này trả về tên của thẻ |
| 9 | lấy văn bản () 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 văn bản hiện tại chỉ chứa các ký tự khoảng trắng. |
Để 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 studio Android để tạo một ứ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 trong Tài sản thư mục / tệp XML |
| 5 | Sửa đổi AndroidManifest.xml để thêm quyền internet cần thiết |
| 6 | Chạy ứng dụng và chọn một 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 Tài sản / 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 được 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 AndroidManifest.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 giả sử bạn đã tạo AVD của mình trong khi thực hiện thiết lập môi trường.
Để chạy ứng dụng từ studio Android, 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 nó và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, nó sẽ hiển thị theo cửa sổ Trình mô phỏng

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