How can I serialize List <T> to XML using LINQ to XML?

I have this general list

   List<zil> listKD = new List<zil>
            {
            new zil{day="Mon",c="1",S1="08:00",S2="08:40",S3="08:47"},
            new zil{day="Mon",c="2",S1="08:50",S2="09:30",S3="09:37"},
            new zil{day="Mon",c="3",S1="09:40",S2="10:20",S3="10:27"},
            new zil{day="Mon",c="4",S1="10:30",S2="11:10",S3="11:17"},
            new zil{day="Tue",c="1",S1="08:00",S2="08:40",S3="08:47"},
            new zil{day="Tue",c="2",S1="08:50",S2="09:30",S3="09:37"},
            new zil{day="Wed",c="1",S1="08:00",S2="08:40",S3="08:47"},
            new zil{day="Wed",c="2",S1="08:50",S2="09:30",S3="09:37"},
            new zil{day="Thu",c="1",S1="08:00",S2="08:40",S3="08:47"},
            new zil{day="Thu",c="2",S1="08:50",S2="09:30",S3="09:37"},
            new zil{day="Thu",c="3",S1="09:40",S2="10:20",S3="10:27"},
            new zil{day="Fri",c="1",S1="08:00",S2="08:40",S3="08:47"},
            new zil{day="Fri",c="2",S1="08:50",S2="09:30",S3="09:37"},
            new zil{day="Fri",c="3",S1="09:40",S2="10:20",S3="10:27"},
            new zil{day="Fri",c="4",S1="10:30",S2="11:10",S3="11:17"},
            };

      

and i want to save this xml list but i dont like this xml file

alt text http://aliaydin.com.tr/exXml.jpg

this code doesn't work, i want

XElement zXml = new XElement("Days",           
           from g in listKD
           select new XElement("Day",
                        new XAttribute("id", g.Day),
                        new XElement("clock",
                        new XAttribute("id", g.c),
                      new XElement("s1", g.s1),
                      new XElement("s2", g.s2),
                      new XElement("s3", g.s3)
                      )));

        ZXml.Save("abc.xml");

      

Thank...

+2


source to share


2 answers


I think you were not grouped during the day; maybe something like:

var el = new XElement("Days",
    from z in listKD
    group z by z.day into tmp
    select new XElement("Day",
        new XAttribute("id", tmp.Key),
        from item in tmp
        select new XElement("clock",
            new XAttribute("id", item.c),
            new XElement("s1", item.S1),
            new XElement("s2", item.S2),
            new XElement("s3", item.S3))
            ));
string s = el.ToString(); // or save etc

      


Refresh comment; flip it over, something like:



        XElement parsed = XElement.Parse(s);
        var newList = (from day in parsed.Elements("Day")
                       from clock in day.Elements("clock")
                       select new zil
                       {
                           day = (string)day.Attribute("id"),
                           c = (string)clock.Attribute("id"),
                           S1 = (string)clock.Element("S1"),
                           S2 = (string)clock.Element("S2"),
                           S3 = (string)clock.Element("S3")
                       }).ToList();

      

To filter to a specific day:

                       from day in parsed.Elements("Day")
                       where (string)day.Attribute("id") == "Mon"
                       from clock in day.Elements("clock")
                       ...

      

+10


source


   [XmlArray("Zils"), XmlArrayItem("Zil", typeof(zil))]
   public List<zil> listKD = new List<zil>();

      



0


source







All Articles