SAX-Parser Frage, dringende Antwort

BillJacks

Grünschnabel
Eine Aufgabe, die ich leider nicht beantworten kann.

Der SAX-Parser besitzt das Interface ContentHandler, um den Inhalt eines
XML-Dokuments zu analysieren. Die Parser-Bibliothek stellt einen
DefaultHandler zur Verfügung, welcher sämtliche Methoden des
ContentHandlers implementiert hat.

Sie möchten über die Methode startDocument() (Interface ContentHandler)
den Anfang eines XML-Dokumentes erfahren. Wie gehen Sie (mit Hilfe des
DefaultHandlers) vor, damit der Parser-Aufruf startDocument in Ihrer
Applikation landet?

Bitte um schnellst mögliche Antwort, da es sehr dringend ist!:(:(
Ist eine Frage aus einer alten Prüfung die ich zur Übung bis auf diese Frage gelöst habe. Habe leider keine Lösung...

Vielen Dank im Voraus!
 
Hi,

schau dir mal das Beispiel hier an :http://tutorials.jenkov.com/java-xml/sax-defaulthandler.html

wie du hier siehst, leitet die Klasse "Four" die Klasse "DefaultHandler" ab. Zusätzlich wird in der Klasse "Four" die geerbte Methode:

Java:
 public void startElement(String namespaceURI, String localName,
                           String qName, Attributes atts)

überschrieben, weshalb die Aufrufe somit in der Klasse "Four" aufschlagen.

Alles klar soweit?

Gruß Sebastian
 
Vielen Dank schon mal.
Habe aber noch 2 Fragen:
Muss ich die Methode Überschrieben? (Oder ist die noch nicht in dem DefaultHandler implementiert)
Wieso hast du startElement genommen, und nicht startDocument()?
 
Hi,

die Methoden sind zwar schon im DefaultHandler "implementiert" aber halt ohne Inhalt.

Java:
public void startElement (String uri, String localName, String qName, Attributes attributes)
throws SAXException
{
   // no op
}

Wenn du also die Methoden nicht überschreibst, passiert rein gar nichts. Im Beispiel, das ich vorhin gepostet habe sind alle 5 Methode überschrieben:

Java:
public void startDocument() throws SAXException {
        System.out.println("start document   : ");
    }

    public void endDocument() throws SAXException {
        System.out.println("end document     : ");
    }

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

        System.out.println("start element    : " + qName);
    }

    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 {
        System.out.println("start characters : " +
            new String(ch, start, length));
    }

Die Ausgabe, die hier produziert wird, findest du ebenfalls auf der Seite.


Gruß S.
 
Zurück