Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Xmlstreamconstants. Entity_declaration

В текстовых блоках нельзя использовать символы | Faculty CDATA #REQUIRED | ERROR - 14 : 41 - cvc-attribute.3: The value 'mit' of attribute 'login' on element 'student' is not valid with respect to its type, 'login'. | Xjc university.xsd | Древовидная и событийная модели | Событийная модель | Parsing started | Org.w3c.dom.Text |


Далее данные извлекаются применением методов:

String getLocalName() – возвращает название тега;

String getAttributeValue(NAMESPACE_URI, ATTRIBUTE_NAME) – возвращает значение атрибута;

String getText() – возвращает текст тега.

Организация процесса разбора документа XML с помощью StAX приведена в следующем примере:

/* пример # 17: реализация разбора XML-документа: StAXProductParser.java:: ParserEnum.java */

package chapt16.stax;

public enum StudentsEnum {

STUDENTS, STUDENT, ADDRESS, STREET,

CITY, COUNTRY, TELEPHONE, NAME, FACULTY, LOGIN

}

 

package chapt16.stax;

import javax.xml.stream.XMLInputFactory;

import javax.xml.stream.XMLStreamConstants;

import javax.xml.stream.XMLStreamException;

import javax.xml.stream.XMLStreamReader;

import java.io.InputStream;

 

public class StAXStudentsParser {

public void parse(InputStream input) {

XMLInputFactory inputFactory =

XMLInputFactory. newInstance ();

try {

XMLStreamReader reader =

inputFactory.createXMLStreamReader(input);

process(reader);

} catch (XMLStreamException e) {

e.printStackTrace();

}

}

// метод, управляющий разбором потока

private void process(XMLStreamReader reader)

throws XMLStreamException {

String name;

while (reader.hasNext()) {

// определение типа "прочтённого" элемента (тега)

int type = reader.next();

switch (type) {

case XMLStreamConstants. START_ELEMENT:

name = reader.getLocalName();

writeStudentFeature(name);

StudentsEnum enumName =

StudentsEnum. valueOf (name.toUpperCase());

studentInfoHandle(enumName,

reader);

break;

case XMLStreamConstants. END_ELEMENT:

break;

case XMLStreamConstants. CHARACTERS:

writeText(reader.getText());

break;

}

}

}

private void studentInfoHandle(StudentsEnum enumName,

XMLStreamReader reader) {

switch (enumName) {

case STUDENTS:

this. writeTitle();

break;

case STUDENT: {

String login =

reader.getAttributeValue(null,

StudentsEnum. LOGIN. name().toLowerCase());

String faculty =

reader.getAttributeValue(null,

StudentsEnum. FACULTY. name().toLowerCase());

writeStudent(login, faculty);

}

break;

case ADDRESS:

writeAddress();

break;

}

}

public void writeTitle() {

System. out. println("Students:");

}

public void writeStudent(String... args) {

System. out. println("Student: Login: "

+ args[0] + "Faculty: " + args[1]);

}

public void writeAddress() {

System. out. println("Address: ");

}

public void writeStudentFeature(String name) {

switch (

StudentsEnum. valueOf (name.toUpperCase())) {

case STREET:

System. out. print("Street: ");

break;

case CITY:

System. out. print("City: ");

break;

case COUNTRY:

System. out. print("Country: ");

break;

case TELEPHONE:

System. out. print("Telephone: ");

break;

case NAME:

System. out. print("Name: ");

break;

}

}

public void writeText(String text) {

System. out. println(text.trim());

}

}

Для запуска приложения разбора документа с помощью StAX ниже приведен достаточно простой код:

/* пример # 18: запуск приложения: StreamOutputRunner.java*/

package chapt16.main;

import java.io.FileInputStream;

import java.io.InputStream;

import chapt16.stax.StAXStudentsParser;

 

public class StAXStudentMain {

public static void main(String[] args)

throws Exception {

StAXStudentsParser parser =

new StAXStudentsParser();

// создание входного потока данных из xml-файла

InputStream input =

new FileInputStream("students.xml");

// разбор файла с выводом результата на консоль

parser.parse(input);

}

}

В результате выполнения в консоль будет выведено:

Students:


Дата добавления: 2015-11-14; просмотров: 37 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Изменение XML-документа| Student: Login: mit Faculty: mmf

mybiblioteka.su - 2015-2024 год. (0.008 сек.)