Zeichen löschen

Status
Nicht offen für weitere Antworten.
C

chrisko

Gast
Hallo,

ich habe XML-Dateien die in einer Formatierten xml Datei stehen. Ich möchte nun ein Programm schreiben, dass die XML Datei einliest, die Leerzeichen bzw. Tabulatorzeichen löscht und die einzelnen Zeilen dann in eine Zeile packt (also das aus einer mehrzeiligen XML datei eine Einzeilige wird).

Ist das möglich und wie kann ich an die Sache herangehen. Ich bräuchte eure Hilfe.

Vielen Dank

chrisko
 
G

Gast

Gast
Einlesen über BufferedReader, der ließt zeilenweise ein, also einfach die Zeilen hintereinanderhängen, dabei wird es automatisch einzeilig.
Leerzeichen kannst du über String.replace() rauskicken. Näheres siehe bei den genannten Funktionen in der API.
 

Verjigorm

Top Contributor
Datei zeilenweise einlesen
Zeile mit String.replace() die "\t" rauslöschen
In einem Stringbuffer/StringBuilder zwischenspeichern.
Datei überschreiben mit dem Inhalt des Buffers

alle Mittel dazu findeste hier im Forum oder per google
 
C

chrisko

Gast
Vielen dank erstmal.

Wie definiere ich den BufferedReader und wie weise ich die Dati zu die geöffnet werden soll. Welche Bibliotheken muss ich importieren???
 

Verjigorm

Top Contributor
Da ich sowas schon hatte:
Code:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class XMLParser 
{
	private String dateiname = "Myxml.xml"; 
	private BufferedReader buf;
	private StringBuffer buffer = new StringBuffer();
	/**
	 * 
	 */
	public XMLParser() 
	{
		File f = new File(dateiname);
		try {
			buf = new BufferedReader(new FileReader(f));
			String zeile = "";
			while((zeile = buf.readLine()) != null)
			{
				zeile = zeile.replaceAll("\\t", "");
				buffer.append(zeile);
			}
			buf.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println(buffer.toString());
		
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		new XMLParser();
	}
}
 
C

chrisko

Gast
Vielen dank für das Programm. Wie kann ich jetzt die Ausgabe in eine neue Datei schreiben??? Ich bin ein neuling in Java.
 
C

chrisko

Gast
Code:
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.Writer;
public class xml_datei_1
{ 
   private String dateiname = "c:\\test.xml"; 
   private BufferedReader buf; 
   private StringBuffer buffer = new StringBuffer(); 
   /** 
    * 
    */ 
   public xml_datei_1() 
   { 
      File f = new File(dateiname); 
      Writer fw = null; 

      try { 
         buf = new BufferedReader(new FileReader(f)); 
         String zeile = ""; 
         fw = new FileWriter( "c:\\test_neu.xml" ); 

         while((zeile = buf.readLine()) != null) 
         { 
            zeile = zeile.replaceAll("\\t", ""); 
            buffer.append(zeile); 
         } 

         buf.close(); 
         fw.write(buffer.toString()); 
          
      } catch (FileNotFoundException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
      } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
      } 

      System.out.println(buffer.toString()); 

       
   } 

   /** 
    * @param args 
    */ 
   public static void main(String[] args) 
   { 
      new xml_datei_1(); 
   } 
}


Ich hab das jetzt so umgeändert, aber irgendetwas haut nicht ganz hin. Die Datei bleibt leer.

Was ist das Problem???
 

Verjigorm

Top Contributor
fw.close(); fehlt

btw: das ist alles nur grad zusammenkopiert

am besten schreibst du ne Funktion und bearbeitest nicht alles im Konstruktor
 
C

chrisko

Gast
Ich hab das jetzt soweit alles hin bekommen aber ich steh nun vor einem neuen Problem.
Und zwar ich muss eine nach einem bestimmten XML Befehl (z.B. "<Daten>") eine neue Zeil in
der Datei beginne. Wie kann ich das machen.

Ich habe daran gedacht eine Abfrage zu erstellen ob die Zeile "<Daten>" enthält, wenn ja dann
den aktuellen StringBuffer auslesen und dann den Inhalt löschen, damit ich ihn neu beschreiben kann.

Wie kann ich das machen oder gibt es noch eine andere Idee?
 

Verjigorm

Top Contributor
naja

Code:
... Zeilen in Buffer schreiben ...
if(zeile.contains("<Daten>"))
   buffer.append("\n"); //Zeilenumbruch einfügen

wenn ich dich richtig verstehe
 
C

chrisko

Gast
Ja danke das war schon richtig bloß wenn ich das Programm starte zeigt es mir zwar die richtige Formatierung, also so wie ich es mir ungefähr vorstelle an, aber in der erzeugten xml datei nicht.

An was liegt das??? ICh poste noch mal den Code



Code:
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.Writer;
public class xml_datei_1
{ 
   public String dateiname = "c:\\test.xml"; 
   public BufferedReader buf; 
   public StringBuffer buffer = new StringBuffer(); 
   public static Writer fw; 

   /** 
    * 
    */ 
   public xml_datei_1() 
   { 
      File f = new File(dateiname); 
      fw = null; 
      File file = new File("c:\\test_neu.xml"); 


      try 
      { 
         buf = new BufferedReader(new FileReader(f)); 
         fw = new FileWriter( file); 

         dateiBearbeitung(buf);
         
      } 
      catch (FileNotFoundException e) 
      { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
      } 
      catch (IOException e) 
      { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
      }    
   } 
   
   public void dateiBearbeitung(BufferedReader buf)
   {
       try
       {
           String zeile = "";      
    	   while((zeile = buf.readLine()) != null) 
    	   { 
    		   zeile = zeile.replaceAll("\\t", ""); 
    		   buffer.append(zeile); 
    		   if(zeile.contains("<Daten>"))		  
    			   buffer.append("\n");			 
    		   
    	   }
           buf.close();
    	   System.out.println(buffer.toString());  
           fw.write(buffer.toString()); 
           fw.close();
       }
       
       catch (IOException e) 
       { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
        } 
   }
   
   public static void main(String[] args) 
   { 
      new xml_datei_1(); 
   } 
}
 

Verjigorm

Top Contributor
nimm mal anstatt buffer.append("\n");
Code:
buffer.append(System.getProperty("line.separator"));
das ist eh sauberer
 
C

chrisko

Gast
Vielen dank du hast mir damit sehr geholfen. Vielen Dank. Falls ich noch Fragen habe melde ich mich
 
C

chrisko

Gast
Hallo,

noch eine kurze Frage, wie kann man die letzte Zeile des StringBuffer löschen???


Mfg

chrisko
 

Verjigorm

Top Contributor
meinst du die letzte Zeile aus der Datei
oder die letzte komplette Zeile aus dem StringBuffer?
letzteres ginge so in etwa:
Code:
         int letzter_zeilenumbruch =  buffer.toString().lastIndexOf(System.getProperty("line.separator"));
  		  buffer = new StringBuffer(buffer.substring(0, letzter_zeilenumbruch));		
			 System.out.println("Buffer ohne letzte Zeile: " + buffer.toString())
 
C

chrisko

Gast
Ja hat funktioniert. Ich hab noch eine kleine Fragen und zwar.

Was ist der Unterschied zwischen:

Code:
 zeile = zeile.replaceAll("\\t", "");

und

Code:
 zeile = zeile.replaceAll(" ", "");
 

Verjigorm

Top Contributor
\t ist das allgemeine Zeichen für Tabulator

Ein Tab-Sprung ist nicht immer überall gleich lang.
Du kannst in fast jedem Editor die Tab-Sprung-Länge einstellen (irgendwie 1 bis x)
von daher kannste nie sagen genau sagen, dass ein Tab-Sprung 2,3,4,...,17,... Leerzeichen lang ist.
Intern kannste halt einfach abfragen obs ein Tab ist ist oder nur x Leerzeichen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G zeichen einer Zeile löschen Java Basics - Anfänger-Themen 4
B lanterna einzelne Zeichen aus dem Terminal löschen Java Basics - Anfänger-Themen 0
T Erstes Zeichen aus String löschen Java Basics - Anfänger-Themen 8
E Zeichen löschen Java Basics - Anfänger-Themen 3
R In einer Aussage ein Zeichen löschen Java Basics - Anfänger-Themen 3
E Zeichen in String löschen Java Basics - Anfänger-Themen 15
G wie mehrere Zeichen in string löschen Java Basics - Anfänger-Themen 3
H Zeichen aus Strings löschen Java Basics - Anfänger-Themen 10
D String, erste zeichen löschen Java Basics - Anfänger-Themen 6
A String Zeichen löschen in einer bestimmten Reihenfolge Java Basics - Anfänger-Themen 25
R Jshell unter Windows: Unicode-Zeichen werden als Fragezeichen ausgegeben Java Basics - Anfänger-Themen 5
J Quelltext mit komischen griechischen Zeichen Java Basics - Anfänger-Themen 4
T or zeichen Java Basics - Anfänger-Themen 2
L 4 stelliges Passwort aus bestimmten Zeichen. Java Basics - Anfänger-Themen 27
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
I Eindeutiger String mit maximaler Anzahl an Zeichen Java Basics - Anfänger-Themen 11
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
O Array mit einem Zeichen vergleichen Java Basics - Anfänger-Themen 1
S Was bedeutet das Zeichen := Java Basics - Anfänger-Themen 9
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
L Zeichen an bestimmter Stelle auslesen Java Basics - Anfänger-Themen 4
S Arrayausgabe und nur einmal ein Zeichen davor Java Basics - Anfänger-Themen 12
johnboyne Java Zeichen Trennen Java Basics - Anfänger-Themen 1
T Zeichen im String verschiebe Java Basics - Anfänger-Themen 17
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
Tino1993 for-Schleife, die eine vorgegebene Anzahl von Zeichen ausgibt Java Basics - Anfänger-Themen 3
pkm Regexproblem - Wie kann ich zwei oder mehr beliebige Zeichen matchen? Java Basics - Anfänger-Themen 7
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
Dimax Erste Schritte String replace alle Zeichen Java Basics - Anfänger-Themen 10
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
F RegEx "+" nur als Zeichen, nicht als Operator oder Sonstiges Java Basics - Anfänger-Themen 2
J Zeichen im String zählen Java Basics - Anfänger-Themen 3
J ObjectOutputStream writeChars, komische Zeichen nur in 1. Zeile Java Basics - Anfänger-Themen 2
H Fehlerausgabe (Ungewollte Zeichen) Java Basics - Anfänger-Themen 1
R Komische Zeichen in Java Java Basics - Anfänger-Themen 5
N Zeichen in einem Textfeld zählen und hinterlegen Java Basics - Anfänger-Themen 6
W Einfachen, ein beliebiges Zeichen oft erkennenden Regex Parser selber schreiben - wie vorgehen? Java Basics - Anfänger-Themen 12
J Vorkommen von Zeichen Java Basics - Anfänger-Themen 44
H Verschiebung von Zeichen Java Basics - Anfänger-Themen 18
O String von vorne nach hinten an einem Zeichen Java Basics - Anfänger-Themen 10
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
G Teil(e) eines Strings entfernen wenn spezifische Zeichen (< & >) vorkommen Java Basics - Anfänger-Themen 5
L String auf bestimmte zeichen untersuchen Java Basics - Anfänger-Themen 9
D gebe string zurück mit von bis bestimmtes Zeichen Java Basics - Anfänger-Themen 4
L Rekursion größtes Zeichen Java Basics - Anfänger-Themen 8
S Zeichen zählen kopierter Text Java Basics - Anfänger-Themen 6
Y String auf allgemein Zeichen untersuchen Java Basics - Anfänger-Themen 3
S String trennen nach beliebigen Zeichen Java Basics - Anfänger-Themen 3
C Zeichen im String bis zu bestimmter Stelle entfernen Java Basics - Anfänger-Themen 6
S Java Text splitten mit Tabs, Zeilen, Zeichen und Klammern. Java Basics - Anfänger-Themen 6
H Zeichen im algorithmus Java Basics - Anfänger-Themen 4
S Das Anführungszeichen(") Zeichen in einen String setzen Java Basics - Anfänger-Themen 1
G Zeichen suchen und Ausgeben. Java Basics - Anfänger-Themen 3
D Input/Output Split am Zeichen | Java Basics - Anfänger-Themen 2
B zeichen eines String mit der kleinsten Frequenz zurückgeben Java Basics - Anfänger-Themen 25
m0n4ch Variablen String auf ungültige Zeichen überprüfen Java Basics - Anfänger-Themen 13
Voreck String Zeichen für Zeichen auslesen Java Basics - Anfänger-Themen 9
R Zeichen in String vergleichen Java Basics - Anfänger-Themen 75
G Gibt es eine Methode die bei einem StringBuilder n mal das Zeichen c hinzufügt? Java Basics - Anfänger-Themen 6
D String Zeichen für Zeichen auslesen Java Basics - Anfänger-Themen 5
S Zeichen ab Suchstring einlesen Java Basics - Anfänger-Themen 6
Z char Array unbekanntes Zeichen selbstständig anlegen Java Basics - Anfänger-Themen 6
M Pipe-Zeichen "|" in Java Java Basics - Anfänger-Themen 1
S Zeichen von abgerundeten Rechtecken auf einem Applet Java Basics - Anfänger-Themen 5
R Anzahl von Zeichen in einem Char Array Java Basics - Anfänger-Themen 4
F StringBuilder: Zeilenumbruch nach x Zeichen ohne Worttrennung Java Basics - Anfänger-Themen 1
F Zeichen einer Datei zaehlen Java Basics - Anfänger-Themen 1
D Java doppelte Zahl/Zeichen in einem String entfernen Java Basics - Anfänger-Themen 6
W JTextField-Objekt liest Umlaute mit falschen Zeichen ein Java Basics - Anfänger-Themen 5
M problem mit diesem zeichen | Java Basics - Anfänger-Themen 10
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
S Input/Output Alphabet in eine Datei schreiben und Anzahl von Zeichen ausgeben. Java Basics - Anfänger-Themen 4
C Anzahl bestimmter Zeichen in einem String ausgeben Java Basics - Anfänger-Themen 7
I String abschneiden erste und letzte Zeichen Java Basics - Anfänger-Themen 3
X Wann schreibt man diese Syntax zeichen { } Java Basics - Anfänger-Themen 8
S Leerzeichen zwischen zwei Zeichen im String entfernen Java Basics - Anfänger-Themen 19
F Methoden split() - Mehrere Zeichen Java Basics - Anfänger-Themen 5
M Input/Output Text auf Fenster zeichen Java Basics - Anfänger-Themen 2
F In einem String nach einem String suchen und Zeichen danach ausgeben Java Basics - Anfänger-Themen 6
S Kleines Zeichen berechnen Java Basics - Anfänger-Themen 5
Q Erste Schritte Zeichen in String farblich hervorheben Java Basics - Anfänger-Themen 4
U markierten Text auf Zeichen zuvor/danach pruefen Java Basics - Anfänger-Themen 9
M Input/Output Zeichen on Konsole einlesen Java Basics - Anfänger-Themen 3
DStrohma Operatoren Kleiner-Zeichen in Größer-Zeichen ändern wenn boolen true? Java Basics - Anfänger-Themen 6
G Input/Output Verhalten BuffferedReader bei unvollständigen Zeichen Java Basics - Anfänger-Themen 1
T Auf jedes Zeichen eines Strings zugreifen? Java Basics - Anfänger-Themen 2
P String Zeichen zuweisen Java Basics - Anfänger-Themen 3
Q Erste Schritte In CharArrayWriter Zeichen an Stelle einfügen Java Basics - Anfänger-Themen 4
H Programm zum Zählen von Zeichen Java Basics - Anfänger-Themen 5
P Methode die String auf Zeichen überprüft Java Basics - Anfänger-Themen 2
A Seltsame Zeichen vor Clienteingabe Java Basics - Anfänger-Themen 5
M Prüfen, ob Zeichen eine Zahl ist Java Basics - Anfänger-Themen 3
T Wörter mit @ als Zeichen finden Java Basics - Anfänger-Themen 13
E Zeichen von Kommandozeilenparameter zählen Java Basics - Anfänger-Themen 6
W String von hinten alle drei Zeichen abschneiden und in umgekehrter Reihenfolge ausgeben. Java Basics - Anfänger-Themen 9
J String Ausgabe nicht-leerer Zeichen nicht korrekt Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben