Hallo alle zusammen!
Ich hab folgendes Problem: Ich möchte Message Objecte per Externalizable in XML wandeln und dann an den vordefinierten ObjectOutput schicken. Daas Problem ist aber, dass "transformer.transform(source, result)" ein Object vom Typ Result erwartet und ich keine Ahnung hab, wie ich meinen ObjectOutout darauf hinbiegen kann.
So sieht das nackte (=abgespeckte) Problem aus:
Zunächst der Starter Code, der eine Message erzeugt und dann dieses erzeugte Object auf einen Stream schreiben will.
und die Message Klasse
Dabei wird im Moment das Ergebnis auf System.out geschrieben, ich will es aber auf ObjectOutput out schreiben - nur wie?
Danke und Gruß
Daishi1002
Ich hab folgendes Problem: Ich möchte Message Objecte per Externalizable in XML wandeln und dann an den vordefinierten ObjectOutput schicken. Daas Problem ist aber, dass "transformer.transform(source, result)" ein Object vom Typ Result erwartet und ich keine Ahnung hab, wie ich meinen ObjectOutout darauf hinbiegen kann.
So sieht das nackte (=abgespeckte) Problem aus:
Zunächst der Starter Code, der eine Message erzeugt und dann dieses erzeugte Object auf einen Stream schreiben will.
Code:
import java.io.*;
public class Starter {
public static void main(String argv[]){
ObjectOutputStream out = null;
Message testMessage = new Message();
try {
out = new ObjectOutputStream(new FileOutputStream("test.dat"));
//out = new ObjectOutputStream(System.out);
out.writeObject(testMessage);
out.flush();
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
und die Message Klasse
Code:
import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
public class Message implements Externalizable{
int messageId;
static Document document;
//Constructor
public Message(){
messageId = 0;}
public void writeExternal(ObjectOutput out) throws IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.newDocument();
//XML Structure^
Element root = (Element) document.createElement("test");
document.appendChild(root);
Element test = (Element) document.createElement("test2");
root.appendChild(test);
} catch (DOMException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ParserConfigurationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//DOM Tree is done, now write this to the stream
try{
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
}catch(Exception e){
e.printStackTrace();
}
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException{
//noch nix hier
}
}
Dabei wird im Moment das Ergebnis auf System.out geschrieben, ich will es aber auf ObjectOutput out schreiben - nur wie?
Danke und Gruß
Daishi1002