SAX-Parser: So lesen Sie eine XML-Datei in Java
Sax-Parser Sax ist der beliebteste Parser des neuesten DOM, im Gegensatz zu DOM funktioniert Sax anders, es lädt XML nicht in den Speicher, bevor es verarbeitet wird, und es erstellt keine Art von XML-Objekt. SAX ist eine gute Wahl für das Parsen einer großen XML-Datei, da es weniger Speicher verbraucht.SAX Parser verwendet drei Methoden, um eine xml:
startElement(): Immer wenn der SAX-Parser auf ein öffnendes Tag '<' trifft, ruft er startElement().
endElement(): at immer wenn der SAX-Parser auf ein schließendes Tag '>' stößt, ruft er startElement() auf.
characters(): Diese Methode wird aufgerufen, wenn der SAX-Parser Text zwischen dem öffnenden und dem schließenden Tag findet
Diese drei Methoden sind für das Parsen von XML verantwortlich, der Programmierer verwendet sie, um Informationen aus dem Code zu analysieren, zu lesen oder zu extrahieren.
Extrahieren Sie Text aus der XML-Datei in java
Um Java-Code zu testen, Sie müssen eine einfache XML-Datei erstellen, die Sie verwenden, um den Inhalt in der Konsole anzuzeigen:xml version="1.0" encoding="UTF-8"?>Der java:
< Kontakte>
< person id="1">
< Vorname> Encoder
< Vorname> Java
< mobil> 054124587
< E-Mail> codeurjava@gmail.com
< person id="2">
< Vorname> Encoder
< Vorname> C++
< mobil> 062148795
< E-Mail> 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 {
//Get sax parser
SAXParserFactory spfactory = SAXParserFactory.newInstance();
//Abrufen einer Instanz des ParserSAXParser saxParser = spfactory.newSAXParser();
/*alle drei Methoden sind im DefaltHandler deklariert /> corp
DefaultHandler handler = new DefaultHandler() {
boolean bnom = false;
boolescher bpreerster Name = false;
boolescher Wert bmobile = false;
boolescher bemail = false;
/*Diese Methode wird aufgerufen, wenn Parser auf
ein öffnendes Tag '<' stößt */
public void startElement(String uri, String localName,
String qName,Attributes attributes) wirft 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;
}
}
/*Diese Methode wird aufgerufen, wenn der Parser auf
ein schließendes Tag stößt '>' */
public void endElement(String uri, String localName,
String qName) wirft 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;
}
}
/*druckt Daten, die zwischen '<' und '>' gespeichert sind */
public void characters(char ch[], int start,
int length) wirft SAXException {
if (bnom) {
System.out.println("Name: " +
new String(ch, Anfang, Länge));
bnom = falsch;
}
if (bprename) {
System.out.println("Vorname: " +
new String(ch, start, length));
Vorname = false;
}
if (bmobile) {
System.out.println("Mobile : " +
new String(ch, start, length));
bmobile = falsch;
}
if (bemail) {
System.out.println("Email : " +
new String(ch, start, length));
bemail = falsch;
}
}
};
saxParser.parse("exemple.xml", handler);
} catch (Ausnahme e) {
e.printStackTrace();
}
}
}
Nachname: coder
Vorname: java
Mobil: 054124587
E-Mail: codeurjava@gmail.com
Nachname: coder
Vorname: c++
Mobil: 062148795
E-Mail: codeurcplusplus@gmail.com