So lesen Sie eine XML-Datei in Java - (SAX Parser)

Lesen einer XML-Datei in Java - (SAX Parser)

SAX parser arbeitet anders mit einem DOM-Parser. Es lädt weder ein XML-Dokument in den Speicher noch erstellt es eine Objektdarstellung des XML-Dokuments. Stattdessen verwendet der SAX-Parser die Rückruffunktion (org.xml.sax.helpers.DefaultHandler), um Clients über die XML-Dokumentstruktur zu informieren.

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

Siehe folgende SAX-Rückrufmethoden:

  • startDocument() undendDocument() - Methode, die am Anfang und Ende eines XML-Dokuments aufgerufen wird.

  • startElement() undendElement() - Methode, die am Anfang und Ende eines Dokumentelements aufgerufen wird.

  • characters() - Methode, die mit dem Textinhalt zwischen den Start- und End-Tags eines XML-Dokumentelements aufgerufen wird.

1. XML-Datei

Erstellen Sie eine einfache XML-Datei.


    
        yong
        mook kim
        example
        100000
    
    
        low
        yin fong
        fong fong
        200000
    

2. Java-Datei

Verwenden Sie den SAX-Parser, um die XML-Datei zu analysieren.

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();
     }

   }

}

Ergebnis

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 : example
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

Warning
In diesem Beispiel können Ausnahmen für die XML-Datei vonUTF-8auftreten. Lesen Sie diesen Artikel überhow to read the XML “UTF-8” file in SAX

Note
Sie könnten daran interessiert sein, dieseHow to read XML file in Java – (DOM Parser) zu lesen