Friday, November 11, 2011

CSV to XML Conversion using LINQ

Language Integrated Query (LINQ) can be used to convert a CSV file to XML. Here is the sample CSV file that needs to be converted
The following code reads the CSV file to an array. LINQ is used to loop through the array and the contents are written as XML using XElement (System.XML.Linq).

public void ConvertCSVToXML()
{
String[] FileContent = File.ReadAllLines(@"C:\Temp\vba.csv");
String XMLNS = "";
XElement Inv = new XElement("Invoice",
from items in FileContent
let fields = items.Split(',')
select new XElement("Item",
new XElement("ID", fields[0]),
new XElement("Name", fields[1]),
new XElement("Price", fields[2]),
new XElement("Availability", fields[3]),
new XElement("TotalPrice", fields[4])
)
);
File.WriteAllText(@"C:\Temp\vba.xml", XMLNS + Inv.ToString() );
}
Here is the Input Text File

The output XML looks like