Xml File einlesen und das erste element ausgeben!?

wildsoul

Mitglied
Hallo damen und herren, ich habe da ein großes Problem!
Muss ein Programm schreiben, dass eine xml datei einliest und das erste Element des Xml-Baumes auf der Konsole ausgibt, muss dabei die dom4j benutzen!
kann mir jemand dabei helfen?

Versuche schon seit 4 stunden das Problem zu lösen, aber kein Ergebniss :((!
 
moin!
Du solltest schon ein bisschen präziser werden, wo denn das problem liegt..
Sonst kann ich dir nur verraten wie man es standardmässig macht ( und wie man es auch überall im Netz findet):
Code:
SAXReader reader = new SAXReader();
Document document = reader.read(new FileInputStream("yourFile.xml");
Element elemRoot = document.getRootElement();


*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import java.io.*;

public class test {

public static void main(String[] args) {
try {
Document doc = new SAXBuilder(true).build("MyXmlFile.xml");
new XMLOutputter().output(doc, System.out);
System.out.println("MyXmlFile.xml");
} catch (JDOMException jde) {
jde.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}


}

}


ist das Falsch
 
Erstens nutzt du nicht dom4j, sondern jdom.. ist schon ein unterschied...
Zweitens hat dein Problem nichts mit jdom zu tun( das codefragment sieht okay aus), sondern du rufst die Klasse schon falsch auf. Geh ich recht in der Annahme, dass der Code in einer Datei names test5 abgespeichert hast? Oder wo kommt sonst das test5 in der Fehlermeldung her?
Wenn du die Datei so nennst wie auch den Klassennamen, sollte es auch klappen..

*grüssle*
MeinerEiner
 
das war jetzt ein anderes Programm welches dieses Fehlermeldung gab!?

und da oben diese erste Programm, das ist von jdom ja, das programm habe ich auch von netzt gezogen, wusste nicht weiter..., kannst du mir weiterhelfen wo ich sowas finde?
 
import java.io.FileOutputStream;

import org.jdom.*;
import org.dom4j.io.SAXReader;
import org.jdom.output.XMLOutputter;
import org.xml.sax.InputSource;




public class test5 {

public static void main(String[] args){
SAXReader sxbuild = new SAXReader();
InputSource is = new InputSource(path);
Document doc = sxbuild.build(is);
Element root = doc.getRootElement();

XMLOutputter outputter = new XMLOutputter(true);
FileOutputStream output = new FileOutputStream("file.xml");
outputter.output(doc,output);

}

}

bei dem Programm gab er diesen Fehlermeldung!
 
Du brauchst mir keine Beispiele aus dem Netz präsentieren, um mich dann zu fragen, ob sie funktionieren... das kannst du selbst machen...
Wenn du näheres zu jdom, dom4j haben willst, geh mal auf die entspechenden "Hersteller"Seiten, einfach mal Google nutzen... und man findet auch ne Menge Beispiele dazu.

Bleib doch auch mal bei einer API.. Selbst in dem Beispiel hast du wieder dom4j und jdom durcheinander geschmissen... blickt doch kein Mensch mehr durch....
Der SAXReader hat auch gar keine build() Methode... Dokumente generiert man hier per read() Methode. Schau dir mein Beispiel an:
Code:
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


public class test5 {

public static void main(String[] args){
SAXReader sxbuild = new SAXReader();
Document doc;
try {
    doc = sxbuild.read("e:/test.xml");
    Element root = doc.getRootElement();
    System.out.println(root);

} catch (DocumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

}

}
Das funktioniert auf jeden Fall....
Speichern des Dokuments mit dem XMLWriter vom dom4j.
Falls es bei dir immer noch net klappt, machst du wie ich schon sagte einen Fehler beim Aufruf. Entweder hast du den falschen Dateinamen, du bist im falschen Verzeichnis beim Aufruf., oder.. oder.. Jedenfalls liegt es nicht am Code..

*grüssle*
MeinerEiner
 
diesmal bekomme ich keine Fehlermeldung, aber er gibt auch nichts aus, da ist ein weißes Feld?!
Ich hab auch verzeichnis richtig geschrieben!
 
Tja dann stimmt entweder mit deiner xml Datei etwas nicht ( aber das sollte eigentlich dann einen Parser error geben), oder du machst schlicht und einfach den falschen Aufruf.

Code:
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


public class test5 {

public static void main(String[] args){
SAXReader sxbuild = new SAXReader();
Document doc;
try {
    doc = sxbuild.read("e:/test.xml");
    Element root = doc.getRootElement();
    System.out.println(root); //1
    System.out.println("*******");
    System.out.println(root.asXML());//2
    System.out.println("*******");
    System.out.println(root.getStringValue());//3
    System.out.println("*******");
    System.out.println(root.getText());//4

} catch (DocumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

}

}

liefert:
Code:
org.dom4j.tree.DefaultElement@a3bcc1 [Element: <TestRoot attributes: []/>]
*******
<TestRoot>
    <TestChild1>
        TextText1
    </TestChild1>
    <TestChild2>
        TextText2
    </TestChild2>
</TestRoot>
*******

    
        TextText1
    
    
        TextText2
    

*******
//4 kann ja logischerweise auch nichts liefern, da mein Root Element keinen Text besitzt, denn mein XML File sieht so aus:

Code:
<TestRoot>
    <TestChild1>
        TextText1
    </TestChild1>
    <TestChild2>
        TextText2
    </TestChild2>
</TestRoot>

*grüssle*
MeinerEiner
 
Zurück