Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Write List to XML and back
Message
 
 
To
10/12/2015 12:56:14
General information
Forum:
ASP.NET
Category:
Other
Environment versions
Environment:
C# 4.0
OS:
Windows 10
Network:
Windows 2008 Server
Database:
MS SQL Server
Application:
Web
Miscellaneous
Thread ID:
01628791
Message ID:
01628808
Views:
29
>>>Hi,
>>>
>>>I have been Googling for this question and find many suggestions but none that I understand and see simple.
>>>
>>>I have a List (example below) and I want it to create an XML file and save it in a folder.
>>>
>>>
>>>List<string> MyList = new List<string>();
>>>MyList.Add( "ABC" );
>>>MyList.Add( "CBS" );
>>>MyList.Add( "NBC" );
>>>
>>>// Now I want to write the above list to an XML that will look like this:
>>><?xml version="1.0"?>
>>><Choices>
>>>        <Channel>ABC</Channel>
>>>        <Channel>CBS</Channel>
>>>        <Channel>NBC</Channel>
>>></Choices>
>>>
>>>
>>>TIA for any suggestions.
>>
>>Several ways. One using XmlDocument:
List<string> channels = new List<string> {"ABC", "CBS", "NBC"};
>>            XmlDocument xd = new XmlDocument();
>>            var choices = xd.AppendChild(xd.CreateElement("Choices"));
>>            foreach (String s in channels)
>>            {
>>                var channel = xd.CreateElement("Channel");
>>                channel.InnerText = s;
>>                choices.AppendChild(channel);
>>            }
>>            xd.Save(@"d:\test.xml");
Or you could look at XmlSerializer and adding attributes to classes.
>
>Some samples using XmlSerializer can be found at http://stackoverflow.com/questions/2292480/xmlserializer-list-item-element-name.
>
>As for manually creating the Xml, I would suggest using the classes in the System.Xml.Linq namespace. To do this as an extension method:
>
using System.Xml.Linq;
>using System.Linq;
>public static class IEnumerableExtensions
>    {
>        public static string ToXml< T>(this IEnumerable< T> source, string rootTag = "List", string itemTag = "Item")
>        {
>            return new XElement(rootTag, source.Select(item => new XElement(itemTag, item))).ToString();
>        }
>}
>
>
Console.WriteLine(MyList.ToXml("Choices", "Channel"));
Thank you very much!
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham
Previous
Reply
Map
View

Click here to load this message in the networking platform