Домой java Как читать XML-файл в Java — (SAX Parser)

Как читать XML-файл в Java — (SAX Parser)

674
0

SAX-парсер работает по-разному с DOM-парсером, он не загружает XML-документ в память и не создает объектное представление XML-документа. Вместо этого парсер SAX использует функцию обратного вызова ( org.xml.sax.helpers.DefaultHandler ) информирует клиентов о структуре документа XML.


SAX Parser is faster and uses less memory than DOM parser.

Смотрите следующие методы обратного вызова SAX:

  • startDocument () и endDocument () — метод, вызываемый в начале и конце документа XML.
  • startElement () и endElement () — Метод, вызываемый в начале и конце элемента документа.
  • characters () — Метод, вызываемый с текстовым содержимым между начальным и конечным тегами элемента документа XML.

1. XML-файл

Создайте простой XML-файл.





yong
mook kim
mkyong
100000


low
yin fong
fong fong
200000


2. Java-файл

Используйте SAX parser для разбора файла XML.


import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class ReadXMLFile {

public static void main(String argv[]) {

try {

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();

DefaultHandler handler = new DefaultHandler() {

boolean bfname = false;
boolean blname = false;
boolean bnname = false;
boolean bsalary = false;

public void startElement(String uri, String localName,String qName,
Attributes attributes) throws SAXException {

System.out.println("Start Element :" + qName);

if (qName.equalsIgnoreCase("FIRSTNAME")) {
bfname = true;
}

if (qName.equalsIgnoreCase("LASTNAME")) {
blname = true;
}

if (qName.equalsIgnoreCase("NICKNAME")) {
bnname = true;
}

if (qName.equalsIgnoreCase("SALARY")) {
bsalary = true;
}

}

public void endElement(String uri, String localName,
String qName) throws SAXException {

System.out.println("End Element :" + qName);

}

public void characters(char ch[], int start, int length) throws SAXException {

if (bfname) {
System.out.println("First Name : " + new String(ch, start, length));
bfname = false;
}

if (blname) {
System.out.println("Last Name : " + new String(ch, start, length));
blname = false;
}

if (bnname) {
System.out.println("Nick Name : " + new String(ch, start, length));
bnname = false;
}

if (bsalary) {
System.out.println("Salary : " + new String(ch, start, length));
bsalary = false;
}

}

};

saxParser.parse("c:\file.xml", handler);

} catch (Exception e) {
e.printStackTrace();
}

}

}

Результат


Start Element :company
Start Element :staff
Start Element :firstname
First Name : yong
End Element :firstname
Start Element :lastname
Last Name : mook kim
End Element :lastname
Start Element :nickname
Nick Name : mkyong
End Element :nickname
Start Element :salary
Salary : 100000
End Element :salary
End Element :staff
Start Element :staff
Start Element :firstname
First Name : low
End Element :firstname
Start Element :lastname
Last Name : yin fong
End Element :lastname
Start Element :nickname
Nick Name : fong fong
End Element :nickname
Start Element :salary
Salary : 200000
End Element :salary
End Element :staff
End Element :company

Предупреждение
В этом примере могут встречаться исключения для XML-файла UTF-8. Прочтите эту статью о том, как читать XML-файл «UTF-8» в SAX Note.
Возможно, вам будет интересно прочитать это Как читать XML-файл на Java — (DOM Parser) java sax xml

Как читать XML-файл в Java — (SAX Parser)

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Как установить Oracle JDK 8 на Debian

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь