XML-Dateien mit MS-Editor bearbeiten

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von George.

    XML-Dateien mit MS-Editor bearbeiten

    Hallo,

    ich habe eine XML-Datei erstellt. Das klappt soweit gut.
    Nun schaue ich mir diese Datei mit einem MS-Editor an.
    Leider wird mit diesem Editor kein Zeilenvorschub durchgeführt.
    Also, es steht alles lang in einer Zeile.
    Am Ende der XML-Datei war ..WriteEndElement(); eingegeben.
    Hat aber für den Zeilenvorschub im Editor keine Wirkung.
    Ich denke, dass es übersichtlicher ist, wenn die Zeilen nicht superlang sind.
    Gibt es da evtl. eine Möglichkeit?
    Es handelt sich hier alles um C#

    Gruß George
    wohin WriteLIne setzen?

    Hier mein Beispiel-Code:

    C#-Quellcode

    1. XmlWriter xw = new XmlTextWriter("C:\\STA\\test.xml", new UnicodeEncoding());
    2. xw.WriteStartDocument();
    3. xw.WriteStartElement("firma");
    4. xw.WriteStartElement("person");
    5. xw.WriteAttributeString("name", "Meier");
    6. xw.WriteEndElement();
    7. xw.WriteStartElement("person");
    8. xw.WriteAttributeString("name", "Schmitz");
    9. xw.WriteEndElement();
    10. xw.WriteEndElement();
    11. xw.Close();


    Code-Tags eingefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Wenn man gar nicht klar kommt, könnte man am Schluss den xmlstring
    kurz in ein XDocument parsen. Ist zwar nicht so elegant aber sollte
    funktionieren.

    VB.NET-Quellcode

    1. Dim doc As XDocument = XDocument.Parse(xmlstring)
    2. Return doc.ToString


    Freundliche Grüsse

    exc-jdbi
    Habs jetzt gerade probiert. Geht sogar mit FW4.0. Eventuell kann man das sogar noch optimieren.
    vb

    VB.NET-Quellcode

    1. Dim fn = Path.GetDirectoryName(Application.ExecutablePath) & "\test.xml"
    2. Using sw = New StreamWriter(fn, False)
    3. Using xw As New XmlTextWriter(sw)
    4. xw.Formatting = Formatting.Indented
    5. xw.WriteStartDocument()
    6. xw.WriteStartElement("firma")
    7. xw.WriteStartElement("person")
    8. xw.WriteAttributeString("name", "Meier")
    9. xw.WriteEndElement()
    10. xw.WriteStartElement("person")
    11. xw.WriteAttributeString("name", "Schmitz")
    12. xw.WriteEndElement()
    13. xw.WriteEndElement()
    14. xw.Flush()
    15. End Using
    16. End Using

    cs

    C#-Quellcode

    1. //https//codeconverter.icsharpcode.net/
    2. var fn = Path.GetDirectoryName(Application.ExecutablePath) + @"\test.xml";
    3. Using (var sw = New StreamWriter(fn, false))
    4. {
    5. Using (var xw = New XmlTextWriter(sw))
    6. {
    7. xw.Formatting = Formatting.Indented;
    8. xw.WriteStartDocument();
    9. xw.WriteStartElement("firma");
    10. xw.WriteStartElement("person");
    11. xw.WriteAttributeString("name", "Meier");
    12. xw.WriteEndElement();
    13. xw.WriteStartElement("person");
    14. xw.WriteAttributeString("name", "Schmitz");
    15. xw.WriteEndElement();
    16. xw.WriteEndElement();
    17. xw.Flush();
    18. }
    19. }

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „exc-jdbi“ ()

    George schrieb:

    Dein Beispiel ist aber in VB.
    Lesen bildet:

    Und:
    Das ist eine sehr schlechte Ausrede.
    Dafür gibt es beliebig viele Konverter, einen findest Du in meiner Signatur.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Argument B zählt. Argument A nicht. Der Edit kam erst nach Post#10. Aber es bleibt dabei: Warum die Ausrede "Das ist aber C#" nicht gilt - vom Prinzip her.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Also nur zur Klärung.
    exc-jdbi hatte das zunächst nur für VB hier eingesetzt.
    Die Version für C# hatte er erst hinzugefügt nachdem ich ihm den Hiweis gegeben habe, dass
    sein Code nur für VB eingestellt war.
    Trotzdem vielen Dank an exc-jdbi für seine Hilfe.
    Leider funktioniert es bei mir immer noch nicht.

    Mit dieser Zeile geht es nicht:

    Using (var xw = New XmlTextWriter(sw))

    XmlTextWriter ist nicht vorhanden. In meinem Beispiel oben gibt es XmlTextWriter.
    Nur leider da ist leider

    xw.Formatting = Formatting.Indented;

    nicht vorhanden.

    Bin erstmal ohne Idee

    Code-Tags eingefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    nun klar, das habe ich natürlich als erstes versucht.
    xw. eingegeben und da hatschon mich die IntelliSense verlassen.
    Dewegen ist es mir nicht klar warum es bei euch geht.

    Gruß George



    Hallo HenryV,

    in meinem Beispiel oben die Nr. 3 ist ein XmlTextWriter vorhanden.

    Die Using's (unten) habe ich natürlich von Start weg eingebaut.

    C#-Quellcode

    1. using System.IO;
    2. using System.Xml;
    3. using System.Windows.Forms;


    Nochmal kurz wiederholt. Mein Beispiel funktioniert ohne Problen.
    Alles leider nur in einer Zeile ohne Zeilenvorschübe.

    Gruß George

    Beiträge zusammengefügt. Code-Tags eingefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Thunderbolt“ ()

    George schrieb:

    XmlWriter xw = new XmlTextWriter("C:\\STA\\test.xml", new UnicodeEncoding());
    Du weist einen XmlTextWriter einem XmlWriter zu.
    Das funktioniert deshalb, weil der eine vom anderen erbt.
    Wenn du aber mit Formatting arbeiten willst, musst du schon explizit den XmlTextWriter definieren.

    C#-Quellcode

    1. XmlTextWriter xw = new XmlTextWriter(...);
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --