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