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 08, 2007 11:12 AM by Fabrice Marguerie

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

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

http://www.codeproject.com/KB/linq/LINQtoCSV.aspx

April 12, 2008 1:20 AM

Leave a Comment

(required) 
(optional)
(required) 
Submit

Featured Item

This Blog

Sponsoring

Syndication

Tags

No tags have been created or used yet.