Best way to achieve this is XMLSerialization. Create a property class as mentioned below and assign values to it :
[Serializable]
[XmlRoot("root")]
public class RootClass
{
[XmlElement("key")]
public List<KeyClass> key { get; set; }
}
[Serializable]
[XmlType("key")]
public class KeyClass
{
[XmlElementAttribute("value")]
public string KeyValue { get; set; }
[XmlElement("Index")]
public List<int> index { get; set; }
}
Now create an XML as mentioned below :
static public void SerializeXML(RootClass details)
{
XmlSerializer serializer = new XmlSerializer(typeof(RootClass));
using (TextWriter writer = new StreamWriter(@"C:\Xml.xml"))
{
serializer.Serialize(writer, details);
}
}
How to assign values and generate XML using method SerializeXML:
// Create a New Instance of the Class
var keyDetails = new RootClass();
keyDetails.key = new List<KeyClass>();
// Assign values to the Key property
keyDetails.key.Add(new KeyClass
{
KeyValue = "22.wav",
index = new List<int> { 1, 2, 3}
});
keyDetails.key.Add(new KeyClass
{
KeyValue = "EFG.wav",
index = new List<int> { 5 , 22 }
});
// Generate XML
SerializeXML(keyDetails);