SAX Parser: Как прочитать XML-файл на Java
Sax parser Sax является самым популярным парсером последней версии DOM, в отличие от DOM, Sax работает по-другому, он не загружает XML в память перед его обработкой и не создает никаких типов XML-объектов. SAX является хорошим выбором для разбора большого xml-файла, потому что он потребляет меньше памяти.SAX Parser использует три метода для разбора и чтения xml:
startElement(): Всякий раз, когда SAX-парсер встречает открывающий тег '<', он вызывает startElement().
endElement(): at всякий раз, когда SAX-парсер встречает закрывающий тег '>', он вызывает startElement().
characters(): Этот метод вызывается, когда SAX-парсер находит текст между открывающим и закрывающим тегом
Эти три метода отвечают за разбор xml, программист использует их для разбора, чтения или извлечения информации из кода.
Извлечь текст из xml-файла в java
Для тестирования java-кода, Вы должны создать простой XML-файл, который вы будете использовать для отображения его содержимого в консоли:xml version="1.0" encoding="UTF-8"?>Код java:
< Контакты>
< person id="1">
< Имя> кодировщик
< Имя> Ява
< Мобильный> 054124587
< Электронная почта> codeurjava@gmail.com < руб./> чел>
< person id="2">
< Имя> кодировщик
< Имя> С++
< Мобильный> 062148795
< Электронная почта> codeurcplusplus@gmail.com < руб./> чел>
контакты>
import javax.xml.parsers.SAXParser;Execution:
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class ReadFileXML{
public static void main(String argv[]) {
try {
//Получаем конфигурацию sax parser
SAXParserFactory spfactory = SAXParserFactory.newInstance();
//Получаем экземпляр объекта parser
SAXParser saxParser = spfactory.newSAXParser();
/*все три метода объявлены в DefaltHandler /> corp
DefaultHandler handler = new DefaultHandler() {
boolean bnom = false;
логическое значение bprefirst name = false;
логическое значение bmobile = false;
логическое значение bemail = false;
/*этот метод вызывается всякий раз, когда парсер встречает
открывающий тег '<' */
public void startElement(String uri, String localName,
String qName,Attributes attributes) throws SAXException{
if (qName.equalsIgnoreCase("name")) {
bnom = true;
}
if (qName.equalsIgnoreCase("firstname")) {
bfirstname = true;
}
if (qName.equalsIgnoreCase("mobile")) {
bmobile = true;
}
if (qName.equalsIgnoreCase("email")) {
bemail = true;
}
}
/*этот метод вызывается всякий раз, когда парсер встречает
закрывающий тег '>' */
public void endElement(String uri, String localName,
String qName) выбрасывает SAXException {
if (qName.equalsIgnoreCase("name")) {
bnom = false;
}
if (qName.equalsIgnoreCase("firstname")) {
bfirstname = false;
}
if (qName.equalsIgnoreCase("mobile")) {
bmobile = false;
}
if (qName.equalsIgnoreCase("email")) {
bemail = false;
}
}
/*выводит данные, хранящиеся между '<' и '>' */
public void characters(char ch[], int start,
int length) выбрасывает SAXException {
if (bnom) {
System.out.println("Name: " +
new String(ch, начало, длина));
bnom = false;
}
if (bprename) {
System.out.println("Имя: " +
new String(ch, start, length));
bимя = ложь;
}
if (bmobile) {
System.out.println("Mobile : " +
new String(ch, start, length));
bmobile = false;
}
if (bemail) {
System.out.println("Email : " +
new String(ch, start, length));
bemail = false;
}
}
};
saxParser.parse("exemple.xml", обработчик);
} catch (Исключение e) {
e.printStackTrace();
}
}
}
Фамилия: coder
Имя: java
Mobile: 054124587
Email: codeurjava@gmail.com
Фамилия: coder
Имя: c++
Mobile: 062148795
Email: codeurcplusplus@gmail.com