Zum Inhalt springen

C# Methode um XML zu strukturieren


Empfohlene Beiträge

Geschrieben

Hallo Leute,

Ich habe eine Anwendung geschrieben die aus einem Webbrowser lesbaren XML Code macht.

Allerdings ist die Ausgabe zusammenhängend, das heißt es ist keinerlei Struktur in dem XML Code.

Nun zu meiner Frage : Gibt es für C# eine Methode die ich einbinden kann die beispielsweise nach jedem Tag einen Zeilenumbruch macht, damit ich Struktur in den XML Code bekomme, oder könnt ihr mir Stichworte nennen wonach ich für dieses Problem suchen soll?

freundlicher gruß ytmfb

Geschrieben

Hi ytmfb!

Ist das valides XML, was du über die entsprechenden Klassen aufbereitest oder über Schleifen und Bastelei erzeugte Strings? Und was genau meinst du mit "aus einem Webbrowser lesbaren XML Code machen"?

Bei letzterem kann ich dir nur dringend raten, deinen Code hingehend der Verlinkung komplett zu refaktorisieren. ;) Grade, wenn es sich um längere Dokumente handelt.

Gruß, Goulasz

Geschrieben

nunja es ist XML aus der Datenbank von einem SharePoint Server.

Die Ausgabe erfolgt in dem Webbrowser Steuerelement meiner Windows Forms Anwendung in Visual Studio 2010 ( C# ).

Allerdings verunstaltet es mir die Ausgabe beim abspeichern des Codes in ein Textdokument.

Entweder fügt er noch Informationen hinzu die der IE / Browser benötigt beim interpretieren oder sämtliche Syntax geht verloren weil der Text aneinanderhängend ist ( keine Zeilenumbrüche ).

<tag>test</tag><tag2>test2</tag2>... endlos lang.

Ich bräuchte quasi an jeder stelle wo ein tag zugeht einen Zeilenumbruch damit ich wenigstens eine überschaubare Struktur im Textdokument habe

<tag>

test

</tag>

<tag2>

test2

</tag2>

Einrückungen wären egal.

Hoffe ich konnte mich präziser ausdrücken.

Gruß, YTMFB

Geschrieben

Das war mein Ansatz, allerdings kommt am ende nicht der Code raus wie er beim Debuggen mit Breakpoint in der Variable steht -

private void buttonSaveAs_Click(object sender, EventArgs e)

{

SaveFileDialog SFD = new SaveFileDialog();

SFD.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";

SFD.FilterIndex = 1;

SFD.RestoreDirectory = true;

if (SFD.ShowDialog() == DialogResult.OK)

{

string path = SFD.FileName;

string text = txtOuput.Text ;

System.IO.File.WriteAllText( path, txtOuput.Text);

}

}

Die Ausgabe sieht allerdings so aus :

14.0.0.7106.0.0<FieldRef Name="test"/><FieldRef Name="_test" ColName="test"/><FieldRef Name="test"/><FieldRef Name="test" ColName="test"/><FieldRef Name="test" ColName="test"/><FieldRef Name="test" ColName="test" ... etc

Anstatt

14.0.0.7106.0.0

<FieldRef Name="test"/>

<FieldRef Name= "test"/>

<FieldRef Name="test"/>

etc..

Geschrieben

private void buttonSaveAs_Click(object sender, EventArgs e)

{

SaveFileDialog SFD = new SaveFileDialog();

SFD.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*";

SFD.FilterIndex = 1;

SFD.RestoreDirectory = true;

if (SFD.ShowDialog() == DialogResult.OK)

{

// insert \n

string text = txtOuput.Text;

string pattern = "</(?<tag>.*?)>";

string replacement = "</{tag}>\n";

Regex rgx = new Regex(pattern);

string result = rgx.Replace(text, replacement);

result = result.Replace("/>", "/>\n");

string path = SFD.FileName;

System.IO.File.WriteAllText( path, text);

}

}

Habs mal mit Regex versucht, klappt allerdings auch nicht wirklich

Geschrieben

Das ist kein Problem deiner Tags, sondern wie du es auf die Platte schreibst.

Du kümmerst dich weder um Format, noch um Encoding und erwartest das ein browser aus einer .txt Datei ohne Formatierungsangaben eine andere Darstellung wählt. Das kann nicht gehen.

Geschrieben

Ah, hat sich nun gelöst. Das Problem war das die Ausgabe in XML direkt in HTML interpretiert wird. Speichere ich die Datei nicht als XML oder TXT ab sondern als HTML klappt es.

Geschrieben

Der XmlWriter kann über XmlWriterSettings auch Zeilenumbrüche und Einrückungen schreiben.

Man könnte das Dokument über XmlReader einlesen und mit einem entsprechend eingestellten XmlWriter das ganze wieder weg schreiben.

Geschrieben
Jo und das ist der Grund warum in jeder Stellenbeschreibung im Internet dann am besten ein Master Abschluss benötigt wird, mit 60 Jahren Berufserfahrung etc. ;)

Weiß nicht was du damit sagen willst, bin gerade mal in meiner Ausbildung & kann leider nicht alles wissen

Der XmlWriter kann über XmlWriterSettings auch Zeilenumbrüche und Einrückungen schreiben.

Man könnte das Dokument über XmlReader einlesen und mit einem entsprechend eingestellten XmlWriter das ganze wieder weg schreiben.

Ich guck mir das mal an danke :)

Geschrieben
Weiß nicht was du damit sagen willst, bin gerade mal in meiner Ausbildung & kann leider nicht alles wissen

Entschuldige bitte, das kam ein bisschen Sch...e von mir rüber, nichts für ungut.

Keiner von uns kann alles wissen, das verlangt auch keiner. Es wirkte so, dass du den Fall, trotz SilentDemise' Tipp, "abgeschlossen" hattest, nach dem der Browser für dich die Dokumentenstruktur erahnt hatte.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...