SAX Programmbeispiel

G

Gast2

Gast
Hallo!

Ich versuche mich über das xml-Parsen zu bilden und finde es echt schwierig.
Dabei habe ich mich mit vielen Lehrtexten im Netz und Buchform beschäftigt und mir bestimmt schon 100 Programmschnipsel angeschaut und 10 verschiedene Codebeispiele versucht umzusetzen. Trotz vielen Ausprobieren und Rumbastel habe ich es nicht geschafft aus einer xml bestimmte Elemente oder Inhalte anzeigen zu lassen.
Mein Ausgangspunkt ist übrigens, dass ich per http mir eine xml schicken lasse. Diese hätte ich dann gerne geparst und mir irgendwelche bestimmte Element (als Übungbeispiel) anzeigen lassen.

Weiß jemand irgend ein Beispielprogramm im Netz, welches komplett und mit entsprechenden Änderungen (wie URL/URI und Elementnamen) lauffähig ist? ???:L

Wäre dankbar! Frank
 
S

SlaterB

Gast
das 101. Programmschnipsel soll es bringen?

du hast da aber auch zwei vollkommen getrennte Themen, die musst du einzeln behandeln,
hier in der "XML und Co."-Area im Thema "SAX Programmbeispiel" werden die wenigsten vorbeikommen um einen http-Download zu besprechen,
kann natürlich auch sein dass du das schon fertig hast, an Beispielen ist dann nur eine Datei von der Festplatte interessant,

mit "URL/URI und Elementnamen" beziehst du dich allein auf XML-Probleme, hat nichts mit http zu tun?
was genau funktioniert denn mit einem wahllosen ersten Programmschnipsel aus dem Netz nicht?
XML tutorial: A simple SAX example
welche Testdatei verwendest du, was konkret funktioniert nicht?
 
G

Gast2

Gast

Dann werde ich mich mal an diesem simpel Beispiel abarbeiten.
Ich habe den Source code in Eclipse eingefügt und die entsprechende JAR importiert und eingebunden (SAX: Simple API for XML - Browse Files at SourceForge.net).

So wie das Beispiel ist, bekomme ich beim Start diese Fehlermeldung
Launch Error
Editor does not contain a main type

Was ja nun eigentlich nicht stimmt.
Zumindest hat die Beispielklasse die Funktion:
Java:
public static void main(String[] args) {...}

Also habe ich die main rausgenommen und in eine Extraklasse gesteckt (SAX_Start.java).
Sieht so weit auch gut aus, aber beim Start erhalte ich die Fehlermeldung:
java.lang.NoClassDefFoundError: sax/SAX_Start
Caused by: java.lang.ClassNotFoundException: sax.SAX_Start
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Exception in thread "main"

Ich habe keine Idee, wie ich weiterkommen kann. :rtfm:
Vielleicht aber jemand anderes...?

Sonnige Grüße! Frank
 
S

SlaterB

Gast
das ist in der Tat ein Punkt, Library zu Library, evtl. gar Version zu Version unterschiedlich,
wenn du jetzt aber eine gefunden hast, ist es doch naheliegend, dort auch nach Codebeispielen zu schauen

SAX


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

import java.io.FileReader;


public class Test
{
    public static void main(String[] args)
        throws Exception
    {
        XMLReader xr = XMLReaderFactory.createXMLReader();
        MySAXApp handler = new MySAXApp();
        xr.setContentHandler(handler);
        xr.setErrorHandler(handler);

        xr.parse(new InputSource(new FileReader("log4j.xml")));
    }
}


class MySAXApp
    extends DefaultHandler
{
    public void startElement(String uri, String name, String qName, Attributes atts)
    {
        if ("".equals(uri))
            System.out.println("Start element: " + qName);
        else
            System.out.println("Start element: {" + uri + "}" + name);
    }

    public void endElement(String uri, String name, String qName)
    {
        if ("".equals(uri))
            System.out.println("End element: " + qName);
        else
            System.out.println("End element:   {" + uri + "}" + name);
    }
}
läuft bei mir, wenn ich aus einer Beispiel-log4j die DTD-Angabe rausnehme, weil ansonsten diese zugehörige DTD nicht gefunden wird
 
G

Gast2

Gast
Hey SlaterB,

ich danke Dir für Dein Programmbeispiel.
Damit habe ich mein erstes funktionierendes Programm zum parsen zum laufen gebracht.:applaus:
Mir fällt ein Stein vom Herzen, weil ich habe lange gebraucht. :oops:

Herzliche Grüße!
Frank
 

Neue Themen


Oben