starbuck86
Mitglied
Hallo liebe Community.
Ich habe folgendes Problem. Ich baue mir ein XML Dokument aus einem Java-Programm auf. Dazu benutze ich eine Methode, die mir auf der Festplatte ein File anlegt, welches ich dann per JDOM einlese, im Speicher vervollständige und dann in das angelegte File abspeichere.
So die Theorie. In der Praxis erweist sich mir das etwas schwieriger!
File-Check- und Initialisierungs-Methode:
Schreib-Methode:
Und hier ist das Problem. Der Outputter schreibt mir jedes Mal das komplette XML-File, welches im Hauptspeicher liegt in die Datei dazu. D.h. bei jedem Input verdoppelt sich der Inhalt der Datei und alles ist X mal in der Datei.
Welche Möglichkeiten habe ich denn hier, außer die Datei zu leeren, neu zu initialisieren und dann zu schreiben?
Gruß,
Thomas
Ich habe folgendes Problem. Ich baue mir ein XML Dokument aus einem Java-Programm auf. Dazu benutze ich eine Methode, die mir auf der Festplatte ein File anlegt, welches ich dann per JDOM einlese, im Speicher vervollständige und dann in das angelegte File abspeichere.
So die Theorie. In der Praxis erweist sich mir das etwas schwieriger!
File-Check- und Initialisierungs-Methode:
Java:
private void checkOutputFile(File xmlout) {
if (xmlout.exists()) {
File oldfile = new File(GetParm.getOut_file() + ".old");
if (oldfile.exists()) {
oldfile.delete();
}
xmlout.renameTo(new File(GetParm.getOut_file() + ".old"));
}
try {
xmlout.createNewFile();
xmlout.setExecutable(false);
xmlout.setReadable(true, false);
xmlout.setWritable(true, true);
writer = new FileWriter(xmlout);
BufferedWriter bw = new BufferedWriter(writer);
bw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n");
bw.flush();
bw.write("<root/>");
bw.flush();
doc = new SAXBuilder().build(xmlout);
outputter.setFormat(Format.getPrettyFormat());
root = doc.getRootElement();
doc.setRootElement(root);
root.setAttribute("ts", Timestamp.getNativeStamp());
writer = new FileWriter(xmlout);
outputter.output(doc, writer);
} catch (IOException e) {
} catch (JDOMException e) {
}
Schreib-Methode:
Java:
private void write2XML(String str, File xmlout) {
String manager = str.split(":")[0];
String[] message = str.split(":")[1].split(" ");
String type = message[0].trim();
boolean element_found_1 = false;
boolean element_found_2 = false;
boolean element_found_3 = false;
boolean element_found_4 = false;
if (type.equals("file")) {
// Type ist File
[... hier werden jetzt verschiedene Elemente im Hauptspeicher verändert]
} else if (type.equals("aj")) {
// Type ist anchorjob
[... hier werden jetzt verschiedene Elemente im Hauptspeicher verändert]
} else if (type.equals("mach")) {
// Type ist maschine
[... hier werden jetzt verschiedene Elemente im Hauptspeicher verändert]
}
try {
outputter.output(doc, writer);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Und hier ist das Problem. Der Outputter schreibt mir jedes Mal das komplette XML-File, welches im Hauptspeicher liegt in die Datei dazu. D.h. bei jedem Input verdoppelt sich der Inhalt der Datei und alles ist X mal in der Datei.
Welche Möglichkeiten habe ich denn hier, außer die Datei zu leeren, neu zu initialisieren und dann zu schreiben?
Gruß,
Thomas
Zuletzt bearbeitet: