Hallo,
Ich habe mir eine kleine Applikation geschrieben, die XML Dateien mit Hilfe einer
Streamklasse schreibt. Funktioniert soweit erst mal aber ich habe noch ein Problem und seh
grad den Wald vor laut lauter Bäumen nicht. Ich habe für die XML Tags jeweils 3 Methoden.
Eine öffnet den Tag, eine andere schreibt den XML Inhalt und die andere schliesst den Tag
wieder. Zusätzlich nutze ich einen Stack für die Tags.
Beim Öffnen mache ich folgendes was nicht ganz korrekt ist. Die Variable output ist
vom Typ StringBuffer.
Das Problem ist nun das bei jedem Aufruf der Open-Methode der Inhalt des Writers
mehrfach ausgegeben wird. Bei jedem Aufruf mit einem Element mehr.
Also z.B.
etc...
Abgekürzt soll es aber eher so aussehen: Das heißt erst wenn alle Tag geschlossen sind,
also der Stack leer ist, soll der Inhalt in die Datei geschrieben werden.
Was würdet ihr vorschlagen? Streamwriter in neue Methode kappseln oder Bedingung drumrum
bauen? Welche müsste ich nutzen? Ist bestimmt eine einfach Sache aber ich hab zu lange drauf geschaut
und bräuchte Anregung.
Danke vorab...
L.
Ich habe mir eine kleine Applikation geschrieben, die XML Dateien mit Hilfe einer
Streamklasse schreibt. Funktioniert soweit erst mal aber ich habe noch ein Problem und seh
grad den Wald vor laut lauter Bäumen nicht. Ich habe für die XML Tags jeweils 3 Methoden.
Eine öffnet den Tag, eine andere schreibt den XML Inhalt und die andere schliesst den Tag
wieder. Zusätzlich nutze ich einen Stack für die Tags.
Beim Öffnen mache ich folgendes was nicht ganz korrekt ist. Die Variable output ist
vom Typ StringBuffer.
Code:
...open(XMLTag){
output.append("<"+tagName.getTagName()+">\n");
stack.push(tagName);
System.out.print(output.toString());
targetWriter.write(output.toString());
}
Das Problem ist nun das bei jedem Aufruf der Open-Methode der Inhalt des Writers
mehrfach ausgegeben wird. Bei jedem Aufruf mit einem Element mehr.
Also z.B.
Code:
<House>
<House>
<Roof>
<House>
<House>
<Roof>
<Top>
Abgekürzt soll es aber eher so aussehen: Das heißt erst wenn alle Tag geschlossen sind,
also der Stack leer ist, soll der Inhalt in die Datei geschrieben werden.
Code:
<House>
<House>
<Roof>
<Top>
</Top>
</Roof>
</House>
Was würdet ihr vorschlagen? Streamwriter in neue Methode kappseln oder Bedingung drumrum
bauen? Welche müsste ich nutzen? Ist bestimmt eine einfach Sache aber ich hab zu lange drauf geschaut
und bräuchte Anregung.
Danke vorab...
L.