Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Import org.xml.sax.XMLReaderFactory;




import org.xml.sax.SAXException;

import javax.xml.parsers.ParserConfigurationException;

import java.io.IOException;

import chapt16.analyzer.sax.SimpleHandler;

 

public class SAXSimple {

public static void main(String[] args) {

try {

//создание SAX-анализатора

XMLReader reader = XMLReaderFactory.createXMLReader();

SimpleHandler contentHandler = new SimpleHandler();

reader.setContentHandler(contentHandler);

reader.parse("students.xml");

} catch (SAXException e) {

e.printStackTrace();

System. out. print("ошибка SAX парсера");

} catch (ParserConfigurationException e) {

e.printStackTrace();

System. out. print("ошибка конфигурации");

} catch (IOException e) {

e.printStackTrace();

System. out. print("ошибка I/О потока");

}

}

}

В результате в консоль будет выведено (если убрать из XML-документа ссылку на DTD):

Students

student login=mit faculty=mmf

Name Mitar Alex name

Telephone 2456474 telephone

Address

Country Belarus country

City Minsk city

Street Kalinovsky 45 street

Address

Student

student login=pus faculty=mmf

Name Pashkun Alex name

Telephone 3453789 telephone

Address

Country Belarus country

City Brest city

Street Knorina 56 street

Address

Student

Students

В следующем приложении производятся разбор документа students.xml и инициализация на его основе коллекции объектов класса Student.

/* пример # 3: формирование коллекции объектов на основе XML-документа: StudentHandler.java */

package chapt16.analyzer.sax;

 

enum StudentEnum {

NAME, TELEPHONE, STREET, CITY, COUNTRY

}

package chapt16.analyzer.sax;

import org.xml.sax.Attributes;

import org.xml.sax.ContentHandler;

import java.util.ArrayList;

import chapt16.entity.Student;

 

public class StundentHandler implements ContentHandler {

ArrayList<Student> students = new ArrayList<Student>();

Student curr = null;

StudentEnum currentEnum = null;

 

public ArrayList<Student> getStudents() {

return students;

}

public void startDocument() {

System.out.println("parsing started");

}

public void startElement(String uri, String localName,

String qName, Attributes attrs) {

if (qName.equals("student")) {

curr = new Student();

curr.setLogin(attrs.getValue(0));

curr.setFaculty(attrs.getValue(1));

}

if (!"address".equals(qName) &&

!"student".equals(qName) &&

!qName.equals("students"))

currentEnum =

StudentEnum.valueOf(qName.toUpperCase());

}

public void endElement(String uri, String localName,

String qName) {

if (qName.equals("student"))

students.add(curr);

currentEnum = null;

}

public void characters(char [] ch, int start,

int length) {

String s = new String(ch, start, length).trim();

if (currentEnum == null) return;

switch (currentEnum) {

case NAME:

curr.setName(s);

break;

case TELEPHONE:

curr.setTelephone(s);

break;

case STREET:

curr.getAddress().setStreet(s);

break;

case CITY:

curr.getAddress().setCity(s);

break;

case COUNTRY:

curr.getAddress().setCountry(s);

break;

}

}

}

/* пример # 4: создание и запуск парсера: SAXStudentMain.java */

package chapt16.main;






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных