Язык XML - практическое введение (часть 2)


Использование Java XML-обработчиков - часть 4


/p>

   Для демонстрции использования этих методов рассмотрим небольшой пример обработчика регистрационного XML-документа (его структура описана в примере 2 первого раздела статьи). Java-приложение выводит содержимое документа и информацию о его структуре, путь к документу задается в командной строке. Для компилирования потребуется JDK 1.1.4 и классы SAX, находящиеся либо в текущем пакете, либо вместе с другими классами в classes.zip.

import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.UnsupportedEncodingException;

import com.ibm.xml.parsers.DOMParser;

import org.xml.sax.Parser; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.AttributeList; import org.xml.sax.HandlerBase; import org.xml.sax.helpers.ParserFactory;

class saxParser extends HandlerBase{

private PrintWriter out;

private int elements; private int attributes; private int characters; private int ignorableWhitespace; private String url;

public saxParser(String url_str) {

url = url_str;

try { out = new PrintWriter(new OutputStreamWriter(System.out, "koi8-r")); } catch (UnsupportedEncodingException e) { }

}

//======================================================= // Обработчики событий. Методы интерфейса DocumentHandler //========================

// Начало документа public void startDocument() {

// Статистика elements = 0; attributes = 0; characters = 0; ignorableWhitespace = 0;

// Процессорные инструкции

out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");

}

// Конец документа public void endDocument() {

out.flush();

}

// Встретился открывающий тэг элемента //

public void startElement(String name, AttributeList attrs) {

elements++; if (attrs != null) { attributes += attrs.getLength(); }

// Печать тэга элемента вместе со списком его атрибутов, например, <elem id="48"> out.print('<'); out.print(name); if (attrs != null) { int len = attrs.getLength(); for (int i = 0; i < len; i++) { out.print(' '); out.print(attrs.getName(i)); out.print("=\""); out.print(attrs.getValue(i)); out.print('"'); } } out.println('>');




Начало  Назад  Вперед



Книжный магазин