Entwickler-Ecke
IO, XML und Registry - In XML Schreiben
AeroX - Di 04.03.08 20:18
Titel: In XML Schreiben
hallo,
ich möchte elemente in meine xml-datei schrebien!
Quelltext
1: 2: 3: 4: 5: 6:
| <?xml version="1.0" encoding="utf-8"?> <Termine> <Termin id="08.05.2008"> <child time="12:00">Das ist der erste Termin!</child> </Termin> </Termine> |
jetzt möchte ein element namens child hinzufügen, mit id!
ich habe schon bei google geguckt, jedoch habe ich nicht gescheites gefunden.
bitte helft mir!
Christian S. - Di 04.03.08 20:23
Wenn ich mir Deine Thread so ansehe: Hast Du mal dran gedacht, die XML-Dateien als Klassen abzubilden und dann mit dem XmlSerializer zu arbeiten?
AeroX - Di 04.03.08 21:27
ja, aber wie kann ich das mit der id machen?
Kha - Mi 05.03.08 18:56
Du erstellst eine Klasse Termin mit einer Property Id und fügst noch ein XmlAttributeAttribute (^^) hinzu. Alles andere macht der Serializer.
Doku => "XML serialization"/"XML-Serialisierung"
AeroX - Do 06.03.08 15:25
Ich weiß nich, ob ich zu blöd dazu bin,
aber ich suche jetzt seit 3 stunden
nach einem kleinen Beispiel,
jedoch finde ich nur welche die mindestens eine Seite lang sind.
Könntet ihr mir vl ein "kleines" Beispiel geben?
Robert_G - Fr 07.03.08 07:48
AeroX hat folgendes geschrieben: |
Könntet ihr mir vl ein "kleines" Beispiel geben? |
Aus den Fingern gesaugt...
Schaue in der Doku die einzelnen Attribute an dort findest du detailiert was sie bedeuten.
Das hier sollte exakt deine Datei generieren:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| [XmlRoot("Termine")] public class TerminDatei { readonly List<Termin> termine = new List<Termin>();
[XmlElement("Termin")] public List<Termin> Termine { get { return termine; } } }
public sealed class Termin { DateTime id;
[XmlAttribute("id")] public DateTime Id { get { return id; } set { id = value; } }
readonly List<Child> children = new List<Child>();
[XmlElement("child")] public List<Child> Children { get { return children; } } } public sealed class Child { DateTime time;
[XmlAttribute("time")] public DateTime Time { get { return time; } set { time = value; } } } |
AeroX - Do 13.03.08 15:37
tut mir leid, dass ich nich zurückgeschrieben habe,
ich hatte es vorrübergehend anders gemacht.
hier mein quellcode:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73:
| using System; using System.IO; using System.Xml; using System.Xml.Serialization; using System.Collections.Generic;
namespace ConsoleApplication1 { [XmlRoot("Termine")] public class TerminDatei { readonly List<Termin> termine = new List<Termin>();
[XmlElement("Termin")] public List<Termin> Termine { get { return termine; } } }
public sealed class Termin { DateTime id;
[XmlAttribute("id")] public DateTime Id { get { return id; } set { id = value; } }
readonly List<Child> children = new List<Child>();
[XmlElement("child")] public List<Child> Children { get { return children; } } } public sealed class Child { DateTime time;
[XmlAttribute("time")] public DateTime Time { get { return time; } set { time = value; } } }
class Program { static void Main(string[] args) { TerminDatei uinfo = new TerminDatei(); XmlSerializer serializer = new XmlSerializer(typeof(TerminDatei)); StreamWriter writer = File.CreateText("test.xml"); serializer.Serialize(writer, uinfo); writer.Close();
StreamReader SR; SR = File.OpenText("test.xml"); string S; while ((S = SR.ReadLine()) != null) { Console.WriteLine(S); } Console.Read(); } } } |
was habe ich falsch gemacht?
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
AxxL - Mi 28.05.08 17:39
Für den Content deines Child nimm das Attribut XMLText(). In der Klasse Child also:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| private string content; [XmlText()] public string Content { get { return this.content; } set{ this.content = value; } } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!