Ziel dieses HowTo’s ist es, mehrere Daten aus einem Service (hier in dem Beispiel aus einem Mock) via LINQ in eine XML zu schreiben (serialisieren).
Die XML soll folgendermaßen aussehen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?xml version="1.0" encoding="utf-8" standalone="yes"?> <Localization> <Module id="Customers"> <CultureCode>de-DE</CultureCode> <Key>General</Key> <Value>Allgemein</Value> </Module> <Module id="Customers"> <CultureCode>en-EN</CultureCode> <Key>General</Key> <Value>General</Value> </Module> <Module id="Customers"> <CultureCode>de-DE</CultureCode> <Key>Customer</Key> <Value>Kunde</Value> </Module> </Localization> |
Dazu inizialisiere ich mir zu erst den Datenpool, in diesem Fall benutze ich eine Klasse die mir ein paar Mock-Objekte bereitstellt.
1 | LocalizationServiceMock lm = new LocalizationServiceMock(); |
Dann erstelle ich mir das erste XML Element “Localization”, welches weitere Elemente beinhalten soll.
1 | XElement moduleElement = new XElement("Localization"); |
Nun iteriere ich durch die Liste von Objekten die ich von meinem Mock bekomme und füge dem oben erstellten “moduleElement” die Daten aus dem Mock, als jeweils neues Element hinzu.
1 2 3 4 5 6 7 8 9 | foreach (LocalizationServiceMock.TranslatedString translatedString in lm.GetTranslatedStrings()) { moduleElement.Add(new XElement("Module", new XAttribute("id", translatedString.Module), new XElement("CultureCode", translatedString.CultureCode), new XElement("Key", translatedString.Key), new XElement("Value", translatedString.Value) ) ); } |
Zum Schluss wird das Ganze noch in ein XDocument geschrieben
1 2 3 4 | var localizationService = new XDocument( new XDeclaration("1.0", "UTF-8", "yes"), moduleElement ); |
und gespeichert:
1 | localizationService.Save("Services/LocalizationService.xml"); |
Fertig sieht das folgendermaßen aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public void WriteXml() { LocalizationServiceMock lm = new LocalizationServiceMock(); XElement moduleElement = new XElement("Localization"); foreach (LocalizationServiceMock.TranslatedString translatedString in lm.GetTranslatedStrings()) { moduleElement.Add(new XElement("Module", new XAttribute("id", translatedString.Module), new XElement("CultureCode", translatedString.CultureCode), new XElement("Key", translatedString.Key), new XElement("Value", translatedString.Value) ) ); } var localizationService = new XDocument( new XDeclaration("1.0", "UTF-8", "yes"), moduleElement ); localizationService.Save("Services/LocalizationService.xml"); } |
Viel Spass beim entwickeln : )







