LINQ in Action - LINQ Book & News

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!
Published Monday, January 8, 2007 11:12 AM by Fabrice Marguerie



Mary James said:

I guess the line "let items = line.Split(',')" won't work anymore if any of the data values in books.txt contains a comma :-)

To overcome this, you could use the LINQ to CSV library to read the actual file

April 12, 2008 1:20 AM
New Comments to this post are disabled