xml jdom und jbuilder

so kurze Zwischenmeldung:

Ich habe Eclipse am laufen unter Suse 8.1. (die gtk Variante - Motif stürzt immer noch ab)
Ich habe eine gtk2 Version gefunden die geht
Das ich auch gleichzeitig Gimp installiert habe hat dann deutlich weitergeholfen :-)

In der Personal Edition von Jbuilder kann man nachträglich JDOM einfügen :-)

Zwei Links setzen:
Projekteigenschaften dort benötigte Bibliotheken JDOM hinzufügen
und
unter tools/ bibliotheken konfigurieren
einen verweis auf JDOM setzen

und danke an Chris hier habe ich mehr über Namensraum konvetionen mitbekommen wie
im Buch steht - die haben das Thema gekonnt ausgelassen :-)

So mal sehen ob ich es jetzt hinbekomme das eigendliche Problem zu lösen:

Eine XML Datei einlesen und dann damit mein Programm zu steuern :-)

Ich glaub nicht das das alles war :-)
aber erstmal noch ein wenig stöbern in Buch und Democodes
 
Zuletzt bearbeitet:
Nach längerer Pause mal wieder Java :-(


Ich brache mal ein JDOM Beispiel was geht ich bekomme es nicht zum laufen ein
XML einzulesen :-(

der Fehler:

org.jdom.input.JDOMParseException: Error on line 2 of document file:/home/wolfgang/jbproject/impad/test.xml: Document is invalid: no grammar found.

Das ist die XML Datei:

<?xml version="1.0"?>
<impad>
<main>
testeintrag
</main>
</impad>
Code:
 // create the jdom -  document
    Document doc = getDocument("test.xml");
    // get access to the root element
    Element root = doc.getRootElement();
    // Element haupt = root.getChild("main");
das sind die entscheiden Java Zeilen
 
Zuletzt bearbeitet:
Original geschrieben von melmager
Nach längerer Pause mal wieder Java :-(


Ich brache mal ein JDOM Beispiel was geht ich bekomme es nicht zum laufen ein
XML einzulesen :-(

der Fehler:

org.jdom.input.JDOMParseException: Error on line 2 of document file:/home/wolfgang/jbproject/impad/test.xml: Document is invalid: no grammar found.

Das ist die XML Datei:

<?xml version="1.0"?>
<impad>
<main>
testeintrag
</main>
</impad>
Code:
 // create the jdom -  document
    Document doc = getDocument("test.xml");
    // get access to the root element
    Element root = doc.getRootElement();
    // Element haupt = root.getChild("main");

das sind die entscheiden Java Zeilen

Du musst dir das Dokument erst zusammenbauen, das geschieht durch den SAX Builder.

Code:
import org.jdom.*;
import org.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
// Klassendeklaration usw ausgelassen

SAXBuilder sxbuild 
     = new SAXBuilder();
InputSourc is 
     = new InputSource(path);
Document doc = sxbuild.build(is);
Element root = doc.getRootElement();
path ist hierbei z.b
path = "/home/chris/docs/test.xml";
path = "c:\java\projekte\jdomproj\test.xml"

oder bzw im verhältnis zur Application
xmlfiles/test.xml.

Sprich Document doc wird lesenderweise nicht einfiach instanziert sondern mann
erhält dieses Dokument durch einen SAXBuilder. Grund:
Lesender zugriff auf ein XML Dokument geht eindeutig am schnellsten per SAX.

Ich habe dazu ein (zugegebenermassen sehr kleines)Tutorial geschrieben:
braucht ein InputSource und kein File direkt. Die InputSource wird durch
 
@Christian hatte es eilig :-) weil er mitten im Satz aufhört -

Du musst dir das Dokument erst zusammenbauen, das geschieht durch den SAX Builder.

mache ich doch :-) in meiner Classe Document ...

und ich muss JDOM nutzen da kommt ja noch mehr :-) ausserdem schein
Jdom einfacher zu sein wie Sax allein. Wenn ich mir die Beispiele so ansehe.

Die Klasse Document gibst weiter oben im Thread zu bewundern :-)

Den Fehler macht er immer noch - nur kein Plan warum
die Syntax vom XML ist doch richtig warum mault er die an?

Nachtrag:
Kann es sein das bei JDOM das XML File valid sein muss ?
 
Zuletzt bearbeitet:
Original geschrieben von melmager
@Christian hatte es eilig :-) weil er mitten im Satz aufhört -



mache ich doch :-) in meiner Classe Document ...

und ich muss JDOM nutzen da kommt ja noch mehr :-) ausserdem schein
Jdom einfacher zu sein wie Sax allein. Wenn ich mir die Beispiele so ansehe.

Die Klasse Document gibst weiter oben im Thread zu bewundern :-)

Den Fehler macht er immer noch - nur kein Plan warum
die Syntax vom XML ist doch richtig warum mault er die an?

Nachtrag:
Kann es sein das bei JDOM das XML File valid sein muss ?

Das File muss nur wohlgeformt sein.
Code:
        private Document getDocument(AddTutorialSiteForm form) throws 
       JDOMException, IOException {
                SAXBuilder builder = new SAXBuilder();
                Document doc = new Document();
                String a = "<root>"+form.getText()+"</root>";
                StringReader reader = new StringReader(a);
                doc = builder.build(reader);
                XMLOutputter outputter = new XMLOutputter(" ",true);
                outputter.output(doc,System.out);
                return doc;
        }

Dieser code ist i.o, da ich ihn gerade selber in einem Projekt nutze.
form.getText() gibt valid XHTML aus, und packt das in ein Root Element.
Dann wird ein StringReader genutzt um den String zu verpacken, weil
der SAXBuilder gerne einen Reader haben will.
Mit einem Writer deiner Wahl, an einen XMLOutputter übergeben, kann der ganze "Scheiss" wieder ausgegeben werden.
 
Zurück