ASP.NET Hosting

Converting a CSV file to XML using LINQ to XML and Functional Construction

Steve has published on his blog a sample from the book we are working on together. This example shows how LINQ to XML makes it easy to convert a CSV file into an XML document.

Going from CSV to XML doesn't require something more complicated than this:

XElement xml =
  new XElement("books",
    from line in File.ReadAllLines("books.txt")
    where !line.StartsWith("#")
    let items = line.Split(',')
    select new XElement("book",
      new XElement("title", items[1]),
      new XElement("authors",
        from authorFullName in items[2].Split(';')
        let authorNameParts = authorFullName.Split(' ')
        select new XElement("author",
          new XElement("firstName", authorNameParts[0]),
          new XElement("lastName", authorNameParts[1])
        )
      ),
      new XElement("publisher", items[3]),
      new XElement("publicationDate", items[4]),
      new XElement("price", items[5]),
      new XElement("isbn", items[0])
    )
  );

If you haven't taken a look at LINQ to XML before, let's bet that this short example will entice you to!

Cross-posted from http://linqinaction.net

1 Comment

  • "Going from CSV to XML doesn't require something more complicated than this". Oh, it does... Your sample doesn't support fields wrapped in quotes which might contain the separtor (line.Split would create more fields than required in this case)... Real life CSVs are a bit trickier...

Comments have been disabled for this content.