javax.xml.transform.Source

LILA

Aktives Mitglied
Hallo Forum,

war mir nicht ganz sicher, ob ich die Frage unter "XML" stellen soll....
Dachte aber, dass sie doch eher unter Anfängerfrage fällt, da sie sehr elementar ist.?

Ich habe einen Webservice, den ich so aufrufe:

Java:
Source ergebnisXML = port.funktion(parameter1, parameter2);

die Funktion des Webservice liefert also als Rückgabewert ein Interface "javax.xml.transform.Source" zurück.
Frage 1.) Wie kann es sein, dass der Rückgabetyp einer Funktion ein Interface ist?
Darf das überhaupt sein?

Frage 2.) Wie könnte ich die Source so bearbeiten, dass mir später in einer Webseite einfach ein XML-Dokument ausgegeben wird?
Geht das überhaupt? Würde gerne JDOM nutzen...

Bin um jeden Ratschlag dankbar....

Liebe Grüße
LILA
 
S

SlaterB

Gast
besser spät als nie:
natürlich kann ein Interface oder eine Superklasse zurückgegeben werden, eine wichtige Funktion in der Polymorphie,
wenn du selber WebService-Klassen erstellst oder sonst irgendwo irgendwann man etwas ableitest, z.B. ActionListener in Swing,
dann werden diese neuen Klassen auch in internen Frameworks als Superklassen bzw. Interfaces herumgereicht,
sonst könnte man ja gar nix mit den neuen Klassen machen

fraglich ist nur, ob auch die implementierende Klasse überall bekannt ist, wenn sie denn doch gebraucht wird um den Code auszuführen,
gerade bei Übertragung im Netzwerk von einem Programm zum nächsten ist das durchaus ein Thema bei eigenen Klassen,
na wird sich schon per Exception bemerkbar machen wenn es ein Problem gibt

aus einem Source eine Datei zu schreiben ist ein Standard-Thema bei XML, siehe z.B. die Links in diesem Thema:
http://www.java-forum.org/allgemeine-java-themen/107130-xml-datei-schreiben-org-w3c-dom.html
 

LILA

Aktives Mitglied
Hallo,

erstmal vielen Dank für die Antwort.

Ich bin mir jetzt nicht ganz sicher, ob ich die Antwort vielleicht falsch verstanden habe.
Aber mein Problem ist, dass ich ja kein "richtiges" XML-File als Input habe, sondern diese Source.
Diese würde ich gerne irgendwie in eine InputSource packen. Dies versuche ich so:

Java:
javax.xml.transform.Source ergebnisXML = port.funktion(parameter1, parameter2);
InputSource input = new InputSource(ergebnisXML);

Aber in die InputSource kann ich nur Charakter-Streams und Byte-Streams packen.
Anscheinend ist die Source keine Charakter oder Byte-Source????
Nun suche ich schon ewig nach irgendeiner Klasse, von welcher ich ein Objekt bilden kann, in welches ich dann meine Source packe um diese dann anschließend in einem Browser wieder auszugeben.

Aber ich finde keine Klasse, welche mir diese Source verarbeiten kann?

Oder liegt es vielleicht doch daran, dass diese javax.xml.transform.Source nur ein Interface ist? Und ich sie deshalb nicht in andere Objekte "stecken" kann.

Tut mir leid, wenn ich so komisch frag. Sorry.

Schöne Grüße
 
S

SlaterB

Gast
aus einer Source eine InputSource zu machen ist anscheinend nicht vorgesehen, vielleicht musst du das aber auch gar nicht,
was genau hast du denn im weiteren vor?

wie ich durch den den Link angedeutet habe, landen eingelesene Daten normalerweise doch irgendwann bei einem Transformer, und der mag Source eh lieber,
eine InputSource ist eher etwas, was man mit Aufwand in eine Source umwandelt,
z.B DocumentBuilder liefert Document aus InputSource, welches man dann per DOMSource als Source in den Transformer steckt

wenn du aber nicht eine Source für Tranformer brauchst, sondern z.B. ein Document, dann kann dir Transformer vielleicht doch helfen, denn der wandelt Sources in Results um und ein möglicher Result-Typ ist DOMResult, welches letztlich einen Root-Node liefert, was wohl quasi ein Document ist,
möchtest du SAX-Verarbeitung, dann hilft SAXResult bestimmt weiter

verwirrend viele Begriffe, ich sehe da auch selber nicht unbedingt durch, quasi noch nie verwendet,
aber erklär doch was du genau brauchst,
stell dir vor an deiner problematischen Stelle hättest du eine InputSource, was würdest du dann damit machen?
 

LILA

Aktives Mitglied
Hallo, vielen Dank schon mal für die Hilfe.
Das sind wirklich viele Begriffe. Wenn man sowas lernt ist es sehr verwirrend :)

Was ich eigentlich machen will ist folgendes:

Ich habe ein Servlet das bisher wie folgt aussieht:

Java:
package clientservlet;

import org.jdom.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.jdom.output.XMLOutputter;
import org.w3c.dom.Node;

public class MeldungsReport extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            String servletID = request.getParameter("MeldungsabfrageID");
            String servletUser= request.getParameter("MeldungsabfrageNutzer");
            String servletStartTime = request.getParameter("MeldungsabfrageStartzeit");
            String servletEndTime = request.getParameter("MeldungsabfrageEndzeit");

            XMLGregorianCalendar startTime = null;
            XMLGregorianCalendar endTime = null;

            unserpackage.WebImporterService service = new WebImporterService();
            unserpackage.ImisSoapWebImporter port = service.getImisSoapWebImporter();
            Source ergebnisXML = port.getImportMeldungen(servletID, servletUser, startTime, endTime);

            out.println("<html>");
            out.println("<head>");
            out.println("<title>Meldungs Report</title>");
            out.println("</head>");
            out.println("<body>");
            
                      try {
                      SAXBuilder builder = new SAXBuilder();
                      Document doc = builder.build( new File( 

                           hierhinein würde ich dann meine Source schreiben, 
                           was so natürlich nicht möglich ist!!!!!!!!!!!!!! ) );

                      XMLOutputter myOutput = new XMLOutputter();
                      myOutput.output( doc, out );
                    } catch( Exception ex ) {
                      ex.printStackTrace();
                    }

            out.println("</body>");
            out.println("</html>");

        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

Um es nochmal kurz zusammen zu fassen, ich würde also gerne diese Source die ich da bekomme einfach als XML-file auf einer Webseite durch mein Servlet darstellen. Nur irgendwie kann ich mit dieser Source nix anfangen, die ich von dem Webservice bekomme....

Grüße
LILA
 
Zuletzt bearbeitet:
S

SlaterB

Gast
es geht also darum, am Ende ein XML-Dokument in Textform zu erhalten,
da ist zum einen mein Link aus der ersten Antwort interessant, denn dort ist auch genau die Frage, wie man XML ausgibt
und unter anderem erwähnt (wieder nur per Links) mit Transformer eine Source (wie du sie hier hast) zu verarbeiten

Java:
TransformerFactory tFactory =   TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
StreamResult result = new StreamResult(out); // out wie du es vorliegen hast
transformer.transform(source, result); // da ist die source
tuts vielleicht

und wie in meiner letzten Antwort hier halb erwähnt der Wer zum Document, damit du von da deinen bekannten Weg nehmen kannst:
Java:
TransformerFactory tFactory =   TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMResult result = new DOMResult(); 
transformer.transform(source, result); // da ist die source
// hier nun result.getNode() oder so aufrufen, habe ich jetzt eh nur aus der API abgeschaut, noch nie benutzt
 

LILA

Aktives Mitglied
Super vielen Dank,

ich kann mein File jetzt ausgeben.
Jetzt muss ich nur noch bissi formatieren.
Aber das werd ich schon hin bekommen.

Juhu :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
HolyFUT Javax Websocket API implementieren Java Basics - Anfänger-Themen 14
nbergmann Wo ist javax.swing.JOptionPane gespeichert? Java Basics - Anfänger-Themen 4
O Problem mit SOAP / javax.xml importieren Java Basics - Anfänger-Themen 7
J javax.servlet.ServletException: Name is null Java Basics - Anfänger-Themen 7
N javax swing JOptionPane Hilfe Java Basics - Anfänger-Themen 3
pkm javax.script.ScriptException bei der ScriptEngine Java Basics - Anfänger-Themen 9
P JDK installieren javac behauptet Javax.swing existiert nicht Java Basics - Anfänger-Themen 8
B javax.ejb.Timer wieder starten? Java Basics - Anfänger-Themen 0
R Klassen Javax.vecmath.* Java Basics - Anfänger-Themen 5
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
T eclipse findet javax nicht Java Basics - Anfänger-Themen 4
N Erste Schritte import javax.media.3d....; //Fehlermeldung: cannot be resolved Java Basics - Anfänger-Themen 10
timbeau Javax.Mail: Check this out Java Basics - Anfänger-Themen 10
c_sidi90 javax.exe beenden nach Programmende Java Basics - Anfänger-Themen 10
StrikeTom Javax.mail frage(zu code) Java Basics - Anfänger-Themen 17
N javax.swing.JOptionPane einbauen? Java Basics - Anfänger-Themen 9
D package javax.comm does not exist Java Basics - Anfänger-Themen 5
kulturfenster Problem mit javax.swing.Timer Java Basics - Anfänger-Themen 2
C javax.print.DocPrintJob Java Basics - Anfänger-Themen 17
G Fehler beim builden javax...... Java Basics - Anfänger-Themen 4
J Servlet Interface javax.servlet.Servlet Java Basics - Anfänger-Themen 2
? Konsolenprogramm hat Problem mit java.awt oder javax.swing Java Basics - Anfänger-Themen 7
G NoClassDefFoundError: javax/xml/stream/XMLStreamException Java Basics - Anfänger-Themen 23
A Finde javax.servlet.* nicht Java Basics - Anfänger-Themen 6
M Fehler: package javax.portlet does not exist Java Basics - Anfänger-Themen 2
V Serialisieren einer ShortMessage (javax.sound.midi) Java Basics - Anfänger-Themen 5
alexpetri javax.xml.stream.* nicht gefunden Java Basics - Anfänger-Themen 3
A java.awt und javax.swing verschwunden Java Basics - Anfänger-Themen 2
S import javax.image.io.*; funktioniert nicht Java Basics - Anfänger-Themen 28
L getDuration() von einem javax.media.player objekt problem. Java Basics - Anfänger-Themen 3
K Problem mit javax/servlet/http/HttpServletRequest.java Java Basics - Anfänger-Themen 2
E Wo bekomme ich das javax.swing.* package her? Java Basics - Anfänger-Themen 3
G import javax.servlet cannot be resolved Java Basics - Anfänger-Themen 1
N Probleme mit import von javax.servlet.* Java Basics - Anfänger-Themen 3
B Wo finde ich die Klasse javax.sound.sampled.AudioSystem Java Basics - Anfänger-Themen 7
R Javax.mail wird nicht gefunden Java Basics - Anfänger-Themen 2
G wie bekomme ich das javax.jws.* package in den JBuilder ? Java Basics - Anfänger-Themen 7
J javax.comm-API kompilieren Java Basics - Anfänger-Themen 12
C wo ist mein javax.mail? Java Basics - Anfänger-Themen 2
L JavaMail: javax.mail wird nicht gefunden Java Basics - Anfänger-Themen 2
F javax.imageio.ImageIO write methode Java Basics - Anfänger-Themen 11
B javax entpacken - aber wohin? Java Basics - Anfänger-Themen 2
S First Time Mave: Wie ergänze ich einen Source-Folder? Java Basics - Anfänger-Themen 10
Bluedaishi Source Code Signieren Java Basics - Anfänger-Themen 22
K First-Source und Backup Download Java Basics - Anfänger-Themen 5
K die Source eines Events bei verschiedenen Quellen herausfinden Java Basics - Anfänger-Themen 1
1 Build Cryptomator from source github Java Basics - Anfänger-Themen 1
M Open Source Projekt mit Unit Tests gesucht Java Basics - Anfänger-Themen 5
N Eclipse Source importieren ohne Link Java Basics - Anfänger-Themen 3
K Dateien aus Source-Package verwenden Java Basics - Anfänger-Themen 10
H Fehler - readJavaFormatString(Unknown Source) Java Basics - Anfänger-Themen 16
S Input/Output JS Source code in Java nutzen Java Basics - Anfänger-Themen 1
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
M java.lang.Enum.valueOf(Unknown Source) Java Basics - Anfänger-Themen 2
T ActionListener Source vergleichen Java Basics - Anfänger-Themen 8
L Source Code in Editor kopieren Java Basics - Anfänger-Themen 5
S Class File Editor gibt beim Start der Programms die Fehlermeldung Source not found aus Java Basics - Anfänger-Themen 1
J Compiler-Fehler bootstrap class path not set in conjunction with -source 1.6 Java Basics - Anfänger-Themen 2
Kenan89 Wo sind die Java Standard Library Source Codes zu finden? Java Basics - Anfänger-Themen 5
S Syntax Error - source level Java Basics - Anfänger-Themen 12
K open source Projekt Java Basics - Anfänger-Themen 7
B Source Code "in einem Rutsch" drucken in Eclipse Java Basics - Anfänger-Themen 5
S String index out of range: 8 at java.lang.String.substring(Unknown Source) Java Basics - Anfänger-Themen 13
C Source File bearbeiten und neu Kompilieren Java Basics - Anfänger-Themen 5
K Java source code generieren Java Basics - Anfänger-Themen 5
S Eclipse Java Source Beispiele Java Basics - Anfänger-Themen 5
A Compile the Source File into a .class File Java Basics - Anfänger-Themen 3
eLogic Einlesen von HTML-Source Java Basics - Anfänger-Themen 6
H Java- Source Code Java Basics - Anfänger-Themen 8
N IndexOutOfBoundsException: Source does not fit in dest beim Kopieren von ArrayList in Vector Java Basics - Anfänger-Themen 4
A Source eines MouseEvents Java Basics - Anfänger-Themen 7
Y nullpointerexception at sun...getCacheEntry(Unknown Source) Java Basics - Anfänger-Themen 11
H Generics werden in -source 1.2 nicht unterstützt Java Basics - Anfänger-Themen 16
U JAR mit Source erstellen Java Basics - Anfänger-Themen 5
? Chat-Source Java Basics - Anfänger-Themen 17
F Wo kann ich die java source attachment finden? Java Basics - Anfänger-Themen 8
N OOP Audioaufnahmeproblem (AudioSystem.getLine(Unknown Source)) Java Basics - Anfänger-Themen 2
R Wörter-KarteiSystem/Vokabel Trainer Source Fragen Java Basics - Anfänger-Themen 9
alderwaran closed source jar, kein javadoc. was macht methode x eigentlich? ( oracle forms pjc beans ) Java Basics - Anfänger-Themen 2
P Was macht dieser Source code? Java Basics - Anfänger-Themen 5
C Source Veränderungen-Erlaubt? Java Basics - Anfänger-Themen 27
F eclipse- source not found Java Basics - Anfänger-Themen 2
S Hilfe - java.lang.RuntimeException: Uncompilable source code - incompatible types Java Basics - Anfänger-Themen 10
L Eclipse - Source Code nativer Methoden Java Basics - Anfänger-Themen 4
saxman Java Source Code Download Java Basics - Anfänger-Themen 2
G kann man bei Open Source Projekten Geld verdienen Java Basics - Anfänger-Themen 17
R API für Source Code Generierung? (APT) Java Basics - Anfänger-Themen 2
A Annotation Processing Tool - Source Code Generierung Java Basics - Anfänger-Themen 1
H Hashmap$KeySetIterator(Unknown Source) Java Basics - Anfänger-Themen 4
G Eclipse source not found Java Basics - Anfänger-Themen 5
G Eclipse + "source not found" Fehler Java Basics - Anfänger-Themen 6
G source code von Java classes Java Basics - Anfänger-Themen 12
M Eclipse: Einfärbung ändern für angeklickte Stellen im Source Java Basics - Anfänger-Themen 5
M source-code-Datei Java Basics - Anfänger-Themen 3
M Text in JInternalFrames - Source feststellen? Java Basics - Anfänger-Themen 6
M Source Code von Collection Framework, etc. Java Basics - Anfänger-Themen 3
P Einrichtung Eclipse & Unknown Source Java Basics - Anfänger-Themen 4
N Open Source für Anfänger, neues Projekt-> Interesse? Java Basics - Anfänger-Themen 36
M Source Code von java.util.SubList Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben