Java JDBC Abfrage Konvertieren in XML

EddieG

Erfahrenes Mitglied
Hi,
ich sitze seit einer Weile an folgendem Problem:
Ich möchte meine Java Abfrage in ein XML Dokument Konvertieren. Was heißt dass?
Ich habe bestimmte Daten und möchte teilen dieser Daten auch Attribute zuweisen und genau hier hängt es.
Java:
               TitelName.getAttribute(Isbn_nr).setValue(isbn);

            }
            System.out.println("\nErzeugtes Element: \n");
            outp.output( elMain, System.out ); System.out.println();
            outp.output( elMain, new FileOutputStream( new File (fnOut)));
        }catch (Exception ex) {
            ex.printStackTrace();
        }
Fehler ist Null pointer Exception.
Laut Java ist eine Insel, stimmt aber das was ich da gebastelt habe.

P.s: Bitte den Post im XML Forum zu löschen & von Usern zu Ignorieren
 
Zuletzt bearbeitet:
Hallo,

vielleicht solltest du die Exception mal posten. Wir können ja schlecht raten wo diese auftritt.
Aber mal ein kleiner Rat. Wenn eine NullPointerException auftritt, ist in der Zeile in der die Exception auftritt irgendein Object nicht initialisiert. Vielleicht solltest du das nochmal kontrollieren.

Gruß

Sascha
 
Der Fehler ist in der Zeile "TitelName.getAttribute(Isbn_nr).setValue(isbn);"
java.lang.NullPointerException
at db.test.main(test.java:122)
Die Variablen sind alle deklariert
 
Dein Fehler kann zwei Ursachen haben.
Entweder führt die Funktion setValue(isbn) irgendwelche String-Operationen mit dem Parameter durch, die es aber nicht kann, weil isbn nur deklariert, aber nicht initialisert wurde - String nr, name,vorname,eintrag,titel,isbn; (nur Deklaration, keine Initialisierung) - wie zerix es auch schon angesprochen hat.
Die zweite Ursache könnte an der Funktion getAttribute(Isbn_Nr) liegen. Und zwar dass diese Funktion, aufgrund irgendeines semantischen Fehlers(der evtl. mit dem Parameter zu tun hat) null zurückgibt. Und da null kein Objekt ist, schlägt das ausführen der Funktion setValue() fehl.

Wenn wir dir helfen sollen, wäre es nützlich, wenn du uns ein bisschen mehr Code liefern könntest, zum Beispiel der Klasse Element.
Außerdem wäre es schön, wenn du den Code mit java-Tags umschließtm, das erhöht die Lesbarkeit ungemein.

Gruß

Matt
 
Naja es ist ja auch noch keins vorhanden deshalb müsste ich ja eigentlich erstmal eins setzen.
Ich habe Oben den Kompletten Code geposted
Das habe ich so versucht:

Java:
                Element TitelName = new Element ("Title");
                Element Isbn_nr = new Element("isbn-nr");
                TitelName.addAttribute(Isbn_nr).setValue(isbn);
-----------------------------
public static Element addAttribute( Element name )
{
    Element AttributeName = name;
    return AttributeName;
}
Aber da ist der Fehler in Zeile
TitelName.setAttribute(Isbn_nr).setValue(isbn);
Meldung:
Can not find Symbol
Symbol: method addAttribute(org.jdom.Element)
Ich habe org.jdom.Element Importiert.
 
Zuletzt bearbeitet von einem Moderator:
Ich weiß selbst, wie gerne man so kleine Fehler übersieht, daher weise ich dich jetzt mal ganz dezent darauf hin, dass es addAttribute(Isbn_Nr) und nicht setAttribute(Isbn_Nr) heißt ;)

Gruß

Matt
 
Danke für den Hinweis.
Das Problem war ich musste den Fall abfangen fall einmal kein Wert mitgegeben wird. Dies habe ich nun eingefügt und nun geht es
 
Zuletzt bearbeitet:
Hallo,

willst du eine Xml-Repräsentation für die Abfrage haben oder für die Daten im Ergebis?

Hier mal ein einfacher Weg wie man das Abfrageergebnis als Xml bekommen kann:
Java:
package de.tutorials.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.rowset.WebRowSet;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import com.sun.rowset.WebRowSetImpl;

public class XmlQueryResultExample {

  public static void main(String[] args) throws Exception {
    MysqlDataSource ds = new MysqlDataSource();
    ds.setServerName("localhost");
    ds.setPort(3306);
    ds.setDatabaseName("workshop");
    ds.setUser("root");
    ds.setPassword("xxx");

    JdbcTemplate jdbcTemplate = new JdbcTemplate(ds);

    WebRowSet webRowSet = jdbcTemplate.query("select * from entry", new ResultSetExtractor<WebRowSet>() {
      public WebRowSet extractData(ResultSet rs) throws SQLException, DataAccessException {
        WebRowSet webRowSet = new WebRowSetImpl();
        webRowSet.populate(rs);
        return webRowSet;
      }
    });

    webRowSet.writeXml(System.out);

  }
}

Siehe auch hier:
http://onjava.com/pub/a/onjava/2006/06/21/making-most-of-jdbc-with-webrowset.html

Gruß Tom
 

Neue Beiträge

Zurück