Daten aus DB in XML-Datei schreiben

BlazZ

Mitglied
Hallo zusammen ich hoffe, dass ihr mir ein wenig helfen könnt.

Also Ausgangspunkt ist eine mysql datenbank auf einem webserver. Dieser enthält daten

Titel, Vorname, Name, Bild, Raum, Telefonnummer. Soweit so gut. Ich möchte die in der Datenbank gespeicherten Daten automatisch in eine XML Datei schreiben.

Diese sollte nachher diese form in etwa haben:
Code:
<personen>
        <person>
                    <titel>Herr</titel>
                    <vorname>Max</vorname>  
                    <name>Mustermann1</name>
                    <Bild>/img/mustermann.jpg"</Bild>
                    <Raum>100</Raum>
                     <tel>0123451234</tel> 
                     .............
         </person>
</personen>

Die Verbindung zur DB aufbauen geht ja noch, aber wie stelle ich die Daten mit Hilfe vonStax so dar, dass die xml Datei nachher so aufgebaut ist 3wie oben zu lesen?

So habe ich die verbindung zur db aufgebaut. Nur was muss ich nun tun ?

import java.sql.*;
import java.io.*;
import java.util.*;

public class DB2XML {
public static void main(String[] args) {
Properties prop = null;
Connection con = null;
PrintWriter xmlOut = null;
PrintWriter out = null;

try {
String url = "jdbc:mysql://localhost/dbname";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String password = "12345678";

Class.forName(driver);

con = DriverManager.getConnection(url, user, password);

Statement stmt = con.createStatement();
String sql = "Select* from personen inner join fachgebiet on personen.lid = fachgebiet.lid";
ResultSet rs = stmt.executeQuery(sql);

}

}
}

Danke für eure hilfe
 
ups, du hast völlig recht, da habe ich mich aber schon dämlich bei der Kategorisierung angestellt. :D

Nun gut, ich hoffe das man mir hier weiterhelfen kann ^^
 
Ich habe falsch herum angefangen. also ich habe bereits eine website erstellt, die die xml datei einliesst und darstellt (unter anderem auch tooltip etc.)

Nur was ich nicht wirklich hinbekomme ist die daten aus der mysql db zu selektieren und dann in eine xml datei zu schreiben. ich habe bereits versucht mit XMLOutputFactory eine normale xml datei zu erzeugen. Das klappt, nur wie schreibe ich daten von der mysql db in die xml datei. es ist ja ein unterschied ob man eine datei manuell hinzufügt oder diese aus der db einliesst.

Code:
import java.io.*;

public class XMLCreater{

  public void main(String[] args){  
       XMLOutputFactory factory = XMLOutputFactory.newInstance();
       XMLStreamWriter writer = factory.createXMLStreamWriter(new FileOutputStream("person.xml"));
 
writer.writeStartDocument();
 writer.writeStartElement("Personen");
    writer.writeStartElement("Person");
     writer.writeAttribute("vorname","Max");
     writer.writeAttribute("name","Mustermann");
     writer.writeEndElement();
   writer.writeEndElement();
  writer.writeEndDocument();
writer.flush();
writer.close();

so erzeugt man ja ein xml datei mit xmloutputfactory, nur wie muss ich es gestalten, dass die datenbankdaten eingelesen werden.

Ich bin dankbar für jede hilfe ^^
 
Du liest die Daten der Datenbank in einer Schleife aus
Java:
while(resultSet.next()) {
    final String vorname = resultSet.get("vorname");
    final String nachname = resultSet.get("nachname");
}

Wieso greift die Webseite denn nicht direkt auf die Datenbank zu?
 
mein prof liebt es anspruchsvolle hausaufgaben zu verteilen und ich hatte ne zu große kappe. das habe ich nun davon ^^

Auf jeden Fall danke für die Antwort, ich werde es direkt einmal ausprobieren ^^
 
so hallo zusammen, ich brauche leider nochmals eure hilfe.

Ich habe das ganze nun mit einem BufferedWriter umgesetzt und lese die Daten ein.

Code:
import java.sql.*;
import java.io.*;

public class createXML {
	public static void main(String[] args)throws Exception {
		
		Connection con = null;
		
		try {
			String url = "jdbc:mysql://localhost/dbname";
			String driver = "com.mysql.jdbc.Driver";
			String user = "";
			String password = "12345678";

			Class.forName(driver);

			con = DriverManager.getConnection(url, user, password);
			
			Statement stmt = con.createStatement();
			String sql = "Select* from dozenten inner join lehrgebiete on dozenten.lid = lehrgebiete.lid";
			ResultSet rs = stmt.executeQuery(sql);
			
			BufferedWriter bw = new BufferedWriter (new FileWriter("person.xml"));
			bw.write("<?xml version=\"1.0\"?>\n\r");	
			bw.write("<Personen>");
			while (rs.next()){
				bw.write("<Person>");
				bw.write("<titel>");
				String titel = rs.getString("Titel");
				bw.write(titel);
				bw.write("</titel>"); 
				bw.write("<vorname>");
				String vorname = rs.getString("Vorname");
				bw.write(vorname);
				bw.write("</vorname>");
				bw.write("<nachname>");
				String nachname = rs.getString("Nachname");
				bw.write(nachname);
				bw.write("</nachname>"); 
				bw.write("</Person>\n\r");		
			}				
			bw.write("</Personen>\n\r");
			
			bw.close();
			rs.close();
			stmt.close();

		}
		finally {
			try {
				if (con != null)
					con.close();
			}
			catch (Exception e) {
				System.err.println(e);
			}
		}
	}
}

Leider bekomme ich noch diese Fehlermeldung:

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
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)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at createXML.main(createXML.java:15)

Wo liegt mein Fehler
 
Du musst dir von der mysql Seite den mysql Java Connector runterladen und in deinen Classpath legen. Dort ist der Treiber für die Verbindung zur MySQL Datenbank aus Java heraus enthalten.
 
Hi,

vielen Dank für deine Hilfe.

Ich habe Connector/J für meine MYSQL DB heruntergeladen.

Ich selber arbeite erstmals mit Eclipse und Ant. Irgendwas scheine ich immer noch falsch zu machen, denn ich bekomme folgende Fehlermeldung.

Code:
Buildfile: C:\homework\ProfessorenInformationsSystem\build.xml
run:
      Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
      	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)
      	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
      	at java.lang.Class.forName0(Native Method)
      	at java.lang.Class.forName(Unknown Source)
      	at createXML.main(Unknown Source)
      Java Result: 1
BUILD SUCCESSFUL
Total time: 422 milliseconds

Dabei habe ich unter dem JAVA Build Path die mysql-connector-java-5.1.8-bin hinzugefügt. Irigendwie stelle ich mich äußerst blöd an. Zusätzlich habe ich die Klassen eigentlich hinzugefügt:

hier ein screenshot:

http://img194.imagevenue.com/img.php?image=86889_561_122_497lo.JPG

Was mache ich noch falsch ?

Danke für eure HIlfe
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück