Wie lese ich XML-Dateien mit dem javax.xml.parsers.SAXParser?

schnuffie

Erfahrenes Mitglied
Hallo XLM-Gurus,

wie lese ich XML-Dateien mit dem javax.xml.parsers.SAXParser?
Für's Verständnis würde mir schon ein kleines Code-Schnipsel genügen... :suspekt:

HTML:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE xmldoc [
<!ELEMENT xmldoc (urlliste, info)>
	<!ELEMENT urlliste (urleintrag+)>
	 <!ELEMENT urleintrag (ueberschrift, (url, urlname)+, bemerkung?)>
		<!ELEMENT ueberschrift (#PCDATA)>
		<!ELEMENT url (#PCDATA)>
		<!ELEMENT urlname (#PCDATA)>
		<!ELEMENT bemerkung (#PCDATA)>
		<!ATTLIST url urltyp (lokal|intern|extern) #REQUIRED>
	 <!ATTLIST urlliste nummer CDATA "ohne"> 
	<!ELEMENT info (#PCDATA)>
]>
<xmldoc>
<urlliste>
</urlliste>
<urlliste>
</urlliste>
<info>
Bla
</info>
<info>
bla
</info>
</xmldoc>

Danke. CU schnuffie
 
Hallo!

SAXParser sind sogenannte Event Basierte XML Parser. D.h. du definierst etwa einen ContentHandler (den du z.Bsp. vom DefaultHandler ableitest) dessen Methoden dann vom Parser aufgerufen werden wenn der Parser in dem XML Dokument an einem Element vorbei kommt, für welches du eine Behandlungsroutine implementiert hast. SO kannst du nun selber steuern was beim Auftreten eines bestimmten Elements geschehen soll.

Aber schau mal hier:

Code:
package de.tutorials;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;

public class Test38 {

	public static void main(String[] args) {
		new Test38().doIt();
	}

	private void doIt() {
		try {
			XMLReader reader = XMLReaderFactory.createXMLReader();
			reader.setContentHandler(new DefaultHandler() {
				//Hier die jeweiligen Methoden des DefaultHandlers implementieren
				public void startElement(String uri,
                        String localName,
                        String qName,
                        Attributes attributes)
                 throws SAXException{
					System.out.println(qName);
				}
			});
			reader.parse(new InputSource(new FileInputStream("c:/test.xml")));

		} catch (SAXException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
}

Gruß Tom
 
Das ist doch schon mal ein guter Anfang.

Wie könnte ich jetzt der Reihe nach die Inhalte aller "<info>"-Tags einlesen?

Muß ich für jeden Tag die XML-datei erneut parsen?

:confused:
 
Zurück