[C# 2.0]Xml in einer Textbox richtig anzeigen

lukasS

Erfahrenes Mitglied
Hallo,

ich möchte den Inhalt einer XML-Datei in einer Textbox richtig formatiert dargestellt haben. Also mit Einrückungen etc. so wie im Editor.
Die Textbox ist eine Multiline-Textbox, leider wird der Text immer wieder in einer Zeile dar gestellt.

Eine Idee was ich machen könnte?

Danke!

Lukas
 
Wie liest du die XML denn aus?
Du könntest die \n und \t selber hinzufügen indem du überprüfst wo ein Start Tag und wo ein Closing Tag ist, und den Content einrückst(dann wieder auf die \ns achten)

Eine RichtextBox wäre glaube ich besser geeignet.
 
Wie liest du die XML denn aus?
Du könntest die \n und \t selber hinzufügen indem du überprüfst wo ein Start Tag und wo ein Closing Tag ist, und den Content einrückst(dann wieder auf die \ns achten)

Eine RichtextBox wäre glaube ich besser geeignet.

Danke für die Antwort. Auslesen tue ich das über XmlElement. Ich bin eigentlich davon ausgegangen dass diese .NET-Xml-Sachen schon vorformatiert sind.
RichTextbox teste ich gleich aus (oder eher morgen, Feierabend gleich :) )

Gruß

Lukas
 
Wenn ich mich nicht irre war es so das es bei den XML Klassen eher darum geht die Tags als einzelne Objekte zu behandeln die auch noch Childobjekte(Tags, Inhalt) haben. Die Formatierung interessiert (die Maschine) ja nicht. Am Einfachsten wäre es glaube ich wie oben schon erwähnt die Tags zu durchlaufen und darauf zu reagieren, könnte aber auch gut sein das eine Formatierte Version gibt, ich kenne aber keine. C# schreibt selbst mit einem XML Writer in eine Zeile(nur so.)

Gruß

Alex
 
Hallo,

lange gesucht und keine NET-Funktion gefunden.
Dann habe ich auf einer Seite (der link ) folgende Funktion gefunden mit der das funktioniert.

Das funktioniert so ähnlich wie oben erwähnt:

Code:
      private string IndentXMLString(string xml)
      {
         string outXml = string.Empty;
         System.IO.MemoryStream ms = new System.IO.MemoryStream();
         // Create a XMLTextWriter that will send its output to a memory stream (file)
         System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(ms, System.Text.Encoding.Unicode);
         System.Xml.XmlDocument doc = new System.Xml.XmlDocument();

         try
         {
            // Load the unformatted XML text string into an instance
            // of the XML Document Object Model (DOM)
            doc.LoadXml(xml);

            // Set the formatting property of the XML Text Writer to indented
            // the text writer is where the indenting will be performed
            xtw.Formatting = System.Xml.Formatting.Indented;

            // write dom xml to the xmltextwriter
            doc.WriteContentTo(xtw);
            // Flush the contents of the text writer
            // to the memory stream, which is simply a memory file
            xtw.Flush();

            // set to start of the memory stream (file)
            ms.Seek(0, System.IO.SeekOrigin.Begin);
            // create a reader to read the contents of
            // the memory stream (file)
            System.IO.StreamReader sr = new System.IO.StreamReader(ms);
            // return the formatted string to caller
            return sr.ReadToEnd();
         }
         catch (Exception ex)
         {
            SWF.MessageBox.Show(ex.ToString());
            return string.Empty;
         }
      }

Danke!

Lukas
 

Neue Beiträge

Zurück