import org.kxml2.io.KXmlParser;

import org.xmlpull.v1.XmlPullParserException;

import javax.microedition.midlet.MIDlet;

import java.io.InputStreamReader;

import java.io.IOException;

public class MobileXmlParser extends MIDlet {

private KXmlParser parser;

private InputStreamReader reader;

/* класс InputStreamReader используется для чтения символов из байтовых потоков */

private boolean doJob = true;

private int event;

private String name;

public MobileXmlParser() {

parser = new KXmlParser();

reader = new InputStreamReader(this.getClass().getResourceAsStream("data.xml"));

/* файл data.xml нужно перед сборкой проекта положить в папку res

после этого к его содержимому можно будет обращаться как к InputStream

Заметьте, что метод getResourceAsStream является profile specific - говоря

по-русски, в J2SE работает совсем не так как в J2ME

*/

/* часто XML данные хранятся в переменной типа String. В этом случае мы бы могли

создать reader, например, так:

String string="<?xml....";

reader = new InputStreamReader(new ByteArrayInputStream(string.getBytes()));

*/

}

public void startApp() {

try {

parser.setInput(reader); //назначим парсеру источник данных

} catch (XmlPullParserException e) {

System.out.println("Не удалось связать парсер с потоком данных");

}

/* ну а теперь распрасим документ и выведем содержимое на консоль */

while (doJob) {

try {

event = parser.next(); //переместим курсор на следующий элемент документа

name = parser.getName(); //получим имя этого элемента

if (event == KXmlParser.END_DOCUMENT) {

doJob = false;

break;

}

if ((event == KXmlParser.START_TAG) && (name.startsWith("trunk"))) {

/* Achtung! В моей WTK2.2 проверка условия (name == "trunk")

работает неправильно, я так и не смог понять почему. Поэтому

приходится делать проверку методом startWith()

*/

System.out.println(name + ":" + parser.getAttributeValue(0));

} else if ((event == KXmlParser.START_TAG) && (name.startsWith("branch"))) {

System.out.print(" " + name + ":" + parser.getAttributeValue(0) + "-");

System.out.println(parser.getAttributeValue(1));

}

} catch (XmlPullParserException e) {

System.out.println("Во время парсинга с парсером случилось что-то нехорошее");

} catch (IOException e) {

System.out.println("Во время парсинга парсер потерял связь с источником данных");

}

}

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

}

}