|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
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; import org.xml.sax.XMLReader; import org.xml.sax.XMLReaderFactory; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; import java.util.ArrayList; import chapt16.analyzer.sax.StundentHandler; import chapt16.entity.Student; import java.io.IOException;
public class SAXStudentMain { public static void main(String[] args) { try { //создание SAX-анализатора XMLReader reader = XMLReaderFactory.createXMLReader(); StundentHandler sh = new StundentHandler(); reader.setContentHandler(sh); ArrayList <Student> list; if (sh!= null) { //разбор XML-документа parser.parse("students.xml"); System. out. println(sh.getStudents()); } } 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/О потока"); } } } В результате на консоль будет выведена следующая информация: Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |