XML aus einer Liste von Objekten erstellen

Written on August 31, 2009

Angenommen, ich habe eine Liste von Kunden und möchte Kunden mit einem bestimmten Kriterium als XML-Fragment exportieren, kann ich dies leicht mit Linq to XML erledigen.

Gegeben ist unsere Klasse "Kunde", die wie folgt aussieht:

public class Kunde {
    public int Id { get; set; }
    public string Vorname { get; set; }
    public string Nachname { get; set; }
    public string Status { get; set; }
}

Wir haben drei Kunden, 2 davon mit Platin-Status, die als XML exportiert werden sollen:

Kunde steveBallmer = new Kunde() {Id = 1, Vorname = "Steve", Nachname = "Ballmer", Status = "Gold"};
Kunde billGates = new Kunde() {Id = 2, Vorname = "Bill", Nachname = "Gates", Status = "Platin"};
Kunde scottGuthrie = new Kunde() {Id = 3, Vorname = "Scott", Nachname = "Guthrie", Status = "Platin"};
List kunden = new List() {steveBallmer, billGates, scottGuthrie};

Der Code zur Generierung des XML sieht wie folgt aus:

XElement platinKunden = new XElement("PlatinKunden",
    from kunde in kunden
    where kunde.Status == "Platin"
    select new XElement("Kunde",
        new XAttribute("Id", kunde.Id),
        new XElement("Vorname", kunde.Vorname),
        new XElement("Nachname", kunde.Nachname),
        new XElement("Status", kunde.Status)));

Persistieren können wir die Platinkunden mittels

platinKunden.Save("platinkunden.xml");

Erwartungsgemäß sieht das Resultat wie folgt aus:

<platinkunden>
    <kunde id="2">
        <vorname>Bill</vorname>
        <nachname>Gates</nachname>
        <status>Platin</status>
    </kunde>
    <kunde id="3">
        <vorname>Scott</vorname>
        <nachname>Guthrie</nachname>
        <status>Platin</status>
    </kunde>
</platinkunden>