Android-обеспечивает возможность разбора XML-файла, используя различные анализаторы, такие как SAX, DOM и т. д. SAX-парсер не может быть использован для создания XML-файлов, он может только анализировать XML-файл.
Хранение данных на Andoid-устройстве не хорошо и безопасно, когда у вас есть большой объем данных, поэтому мы храним данные на сервере и передаем их в XML-формате, а затем мы разбираем их и показываем на устройстве.
Для разбора данных с использованием SAX вы можете создать InputStream либо из URL или из локального файла.В этом уроке мы будем хранить XML-файл в папке assets и создавать InputStream и разбирать его. Выполните следующие действия:
Шаг 1: Создайте новый Andoid-проект с именем SAXxmlParsing.
Шаг 2: Создайте в папке assets XML-файл с именем exampleXML.xml напишите в нем следующее:
<records> <hotel> <name>foodpanda</name> <address>USA</address> </hotel> <hotel> <name>Chipotle</name> <address>Virginia</address> </hotel> <hotel> <name>McDonald's</name> <address>India</address> </hotel> </records>
Шаг 3: Создайте TextView в main.xml, для отображения данные, получаемых из XML:
<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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:text="Hotels of your Choice are:" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView1"> </RelativeLayout>
Шаг 4: Напишите следующее в вашем MainActivity.java:
package com.example.saxxmlparsing;
import java.io.InputStream;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.textView1);
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean name = false;
boolean salary = false;
public void startElement(String uri, String localName,
String qName, Attributes attributes)
throws SAXException {
if (qName.equalsIgnoreCase("name")) {
name = true;
}
if (qName.equalsIgnoreCase("address")) {
salary = true;
}
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
}
public void characters(char ch[], int start, int length)
throws SAXException {
if (name) {
tv.setText(tv.getText() + "nn Hotel Name : "
+ new String(ch, start, length));
name = false;
}
if (salary) {
tv.setText(tv.getText() + "n Address : "
+ new String(ch, start, length));
salary = false;
}
}
};
InputStream is = getAssets().open("exampleXML.xml");
saxParser.parse(is, handler);
} catch (Exception e) {
e.printStackTrace();
}
}
}
На выходе будет отображаться список отелей с адресами, взятые из XML-файла:

Вы можете хранить XML-файл на сервере, а вместо папки assets. Для этого вам понадобится URL-файла, чтобы создать объект InputStream.
Источник: XML Parsing Using SAX Parser
