Streamklassen, Filewriter und StringBuffer

Status
Nicht offen für weitere Antworten.

lolo

Mitglied
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.

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>
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.

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.
 
S

SlaterB

Gast
dein Problem ist noch nicht ganz klar,
ich nehme an irgendwer (wer?, welcher Code) schreibt am Anfang House wohin auch immer,
und danach ein anderes Stück Code die komplette Datei, mit House beginnend,

richtig?
und was ist deine Frage dazu?
wenn du das nicht doppelt haben möchtest, dann muss eine dieser Ausgaben modifiziert werden, richtig,
einfacher scheint dies bei der ersten Ausgabe
 

lolo

Mitglied
Also in meiner Testklasse sagen ich folgendes:

Code:
...main(...){
try{
            FileWriter fw 	= new FileWriter("XMLWriter.xml");
            XMLWriter xWriter 	= new XMLWriter(fw);

            House h1 = new House("yes", "top","Description1");
            House h2 = new House ("yes", "flat","Description2");

            XMLTag houses = new XMLTag("houses");
            XMLTag house = new XMLTag("house");
            XMLTag roof= new XMLTag("roof");
            XMLTag description= new XMLTag("description");
	
            xWriter.open(houses);
            xWriter.open(house);
            xWriter.open(roof);
            xWriter.print(new XMLContent(h1.getRoof()));
            xWriter.close(roof);
            xWriter.open(description);
            xWriter.print(new XMLContent(h1.getDescription()));
            xWriter.close(description);
            ....

            xWriter.open(house);
            xWriter.close(houses);
}

Das Problem ist die Ausgabe. Bei jedem Aufruf der open oder print Methode wird dem StringBuffer ein neues Element oder Content (je nach dem) hinzugefügt. Soweit so gut.

Code:
targetWriter.write(output.toString());
Diese Anweisung in der Methode Open (Siehe erstes Posting) und Print sorgt nun dafür das der Inhalt ausgegeben wird. Es sollte aber erst ausgegeben werden wenn alle Tags mit Inhalt geschrieben und geschlossen wurden. Das deutet auf eine Bedingung hin aber wie und welche. Ich habe einige Sachen probiert aber bisher erfolglos. Danach würde man auch den Stream schliessen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
A Datei Ein und Ausgabe FileWriter und printWriter Java Basics - Anfänger-Themen 5
O Ausgabe als .txt Datei speichern mit FileWriter Java Basics - Anfänger-Themen 2
B FileWriter nicht sichtbar? Java Basics - Anfänger-Themen 4
D Methoden Filewriter macht keine Zeilenumbrüche Java Basics - Anfänger-Themen 3
D FileWriter schreibt nicht in Datei Java Basics - Anfänger-Themen 14
Z FileWriter erzeugt Symbole Java Basics - Anfänger-Themen 8
C FileWriter bzw. Reader fehlerhaft Java Basics - Anfänger-Themen 6
C FileWriter Problem. Java Basics - Anfänger-Themen 2
M FileWriter Neue Datei wenn aktuelle "zu groß" Java Basics - Anfänger-Themen 3
D Nur aus Interesse: Warum verwendet man FileWriter.flush()? Java Basics - Anfänger-Themen 4
B FileWriter und JFileChooser zusammenfügen Java Basics - Anfänger-Themen 3
B FileWriter close() muss? Java Basics - Anfänger-Themen 8
Java-Insel Methoden FileWriter Methoden funktionieren nicht Java Basics - Anfänger-Themen 20
D Erste Schritte Warum try-catch für FileWriter Java Basics - Anfänger-Themen 5
G Effizienzsteigerung von FileWriter als Logging Java Basics - Anfänger-Themen 4
L FileReader und Filewriter Java Basics - Anfänger-Themen 4
O Datentypen double in string über fileWriter... Java Basics - Anfänger-Themen 7
O OOP fileWriter Dateiname übergeben Java Basics - Anfänger-Themen 12
R Klassen FileWriter und CharSet Java Basics - Anfänger-Themen 4
Luk10 FileWriter Java Basics - Anfänger-Themen 6
W Problem mit FileWriter / ActionListener Java Basics - Anfänger-Themen 6
O Integer in File mit Filewriter schreiben - geht nicht richtig Java Basics - Anfänger-Themen 4
M Probleme mit FileWriter Java Basics - Anfänger-Themen 7
M FileWriter innerhalb runnable Jar Java Basics - Anfänger-Themen 8
Burny91 FileReader / FileWriter / BufferedWriter An einer bestimmten Zeile String ersetzten Java Basics - Anfänger-Themen 2
C FileWriter mit einer Variable Java Basics - Anfänger-Themen 8
S FileWriter - in neue Zeile schreiben!? Java Basics - Anfänger-Themen 19
K FileWriter Speicherort Java Basics - Anfänger-Themen 7
T OOP Speichern mit BufferedWriter(FileWriter(File)) Java Basics - Anfänger-Themen 2
S FileWriter Java Basics - Anfänger-Themen 3
S Filewriter schreibt einfach nicht Java Basics - Anfänger-Themen 6
G FileWriter -> neue Zeile Java Basics - Anfänger-Themen 13
F Seltsame Zeichen und kein Zeichenumbruch mit Filewriter Java Basics - Anfänger-Themen 4
G FileWriter Java Basics - Anfänger-Themen 3
G FileWriter Java Basics - Anfänger-Themen 6
T FileWriter Java Basics - Anfänger-Themen 5
M FileWriter Java Basics - Anfänger-Themen 18
J Problem mit FileWriter Java Basics - Anfänger-Themen 24
N Schneller als FileWriter? Java Basics - Anfänger-Themen 28
B Problem mit Filereader und filewriter Java Basics - Anfänger-Themen 20
M FileWriter-Problem Java Basics - Anfänger-Themen 2
P FileWriter schreiben? Java Basics - Anfänger-Themen 4
D FileWriter write? Zeilenumbruch ? Java Basics - Anfänger-Themen 4
G Prüfen mit FileWriter Java Basics - Anfänger-Themen 6
N Problem mit FileWriter Java Basics - Anfänger-Themen 2
S FileWriter-Variable nicht initialisiert Java Basics - Anfänger-Themen 3
R FileWriter: Dort wieder anfangen, wo er aufgehört hat Java Basics - Anfänger-Themen 4
S FileWriter funzt nicht :( Java Basics - Anfänger-Themen 5
B Compiler -> unendliche Schleife (StringBuffer?) Warum? Java Basics - Anfänger-Themen 2
C Stringbuffer auf Zeilenumbruch überprüfen Java Basics - Anfänger-Themen 14
A StringBuffer Java Basics - Anfänger-Themen 1
H Wie wandel ich ein Datum in eine Zeichenkette um mit StringBuffer? Java Basics - Anfänger-Themen 3
S Dateien/LinkedList/StringBuffer - SOrtierung klappt nicht so ganz Java Basics - Anfänger-Themen 2
D Input/Output Stringbuffer Befehle bei Konvertierung in String Java Basics - Anfänger-Themen 19
B Wie wichtig ist Verwendung von StringBuffer in Schleifen? Java Basics - Anfänger-Themen 10
C Elemente im StringBuffer ersetzen Java Basics - Anfänger-Themen 19
F Problem bei Rückgabe von StringBuffer aus Methode Java Basics - Anfänger-Themen 6
M StringBuffer Java Basics - Anfänger-Themen 2
K Alle vorkommen eines Zeichens in StringBuffer Objekt löschen Java Basics - Anfänger-Themen 6
A String wird nur einmal an den StringBuffer angehängt Java Basics - Anfänger-Themen 10
F StringBuffer und String kompatibel ?? Java Basics - Anfänger-Themen 5
M StringBuffer - Methoden Java Basics - Anfänger-Themen 6
H String/StringBuffer nach zeilen aufteilen Java Basics - Anfänger-Themen 2
M Frage zum StringBuffer Java Basics - Anfänger-Themen 7
A Unterschied zwischen String & Stringbuffer! Java Basics - Anfänger-Themen 14
A Zeichen selektiv in einen neuen StringBuffer speichern Java Basics - Anfänger-Themen 2
S StringBuffer(Buchstabe) -> Double konvertieren Java Basics - Anfänger-Themen 6
K StringBuffer Java Basics - Anfänger-Themen 5
S StringBuffer in Datei - Problem mit neuer Zeile Java Basics - Anfänger-Themen 2
Z Was ist ein StringBuffer und wie benutz ich das Ding? Java Basics - Anfänger-Themen 3
S StringBuffer anstatt += Java Basics - Anfänger-Themen 8
D String/StringBuffer mit Zeichen einer Sorte füllen Java Basics - Anfänger-Themen 14
B StringBuffer Problem Java Basics - Anfänger-Themen 2
N String oder StringBuffer/StringBuilder Java Basics - Anfänger-Themen 6
D string/stringbuffer Java Basics - Anfänger-Themen 6
G String vs StringBuffer Java Basics - Anfänger-Themen 11
J StringBuffer-Objekt soll auf Char-Array zugreifen. Java Basics - Anfänger-Themen 4
J StringBuffer Java Basics - Anfänger-Themen 4
T Unicode StringBuffer -> String = unleserlich Java Basics - Anfänger-Themen 7
K Wie kann ich daraus einen StringBuffer machen ? Java Basics - Anfänger-Themen 4
R OutputStream direkt in StringBuffer schreiben lassen Java Basics - Anfänger-Themen 2
L String to StringBuffer Java Basics - Anfänger-Themen 3
B StringBuffer Java Basics - Anfänger-Themen 8
B Stringbuffer Java Basics - Anfänger-Themen 4
S PrintWriter mit StringBuffer? Java Basics - Anfänger-Themen 3
G StringBuffer Array null setzen Java Basics - Anfänger-Themen 2
J String in StringBuffer ersetzen Java Basics - Anfänger-Themen 7
S StringBuffer.toString() Java Basics - Anfänger-Themen 3
K Wie lese ich einen StringBuffer ein? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben