Linq to XML
23 April 2010
Leave a comment
Here is a very short post giving an example on how to use Linq to XML.
Let’s say we have the following XML
<?xml version="1.0" encoding="utf-8" ?>
<projects>
<project title="Kraankuil">
<screenshot>kraankuil.jpg</screenshot>
<uri>http://www.kraankuil.co.za</uri>
<technologies>Gimp, ASP.NET, CMS</technologies>
<launched>12 March 2010</launched>
<description>Website for a small family owned B&B in South Africa.</description>
</project>
</projects>
We will do a class to easily handle the data like this
public class Project
{
public string Title { get; set; }
public string Screenshot { get; set; }
public string Uri { get; set; }
public string Technologies { get; set; }
public string Launched { get; set; }
public string Description { get; set; }
}
I will be using this is a web service where I use this code
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<Project> ProjectList()
{
XDocument dataDoc;
// load the file - from cache if possible
if (HttpContext.Current.Cache["dataDoc"] == null)
{
dataDoc = XDocument.Load(Server.MapPath("~/App_Data/Data.xml"));
HttpContext.Current.Cache["dataDoc"] = dataDoc; // store it in the cache
} else {
dataDoc = (XDocument)HttpContext.Current.Cache["dataDoc"];
}
//get the projects from the file
var projectList = from project in dataDoc.Descendants("project")
select new Project
{
Title = project.Attribute("title").Value,
Screenshot = project.Element("screenshot").Value,
Technologies = project.Element("technologies").Value,
Launched = project.Element("launched").Value,
Description = project.Element("description").Value,
Uri = project.Element("uri").Value
};
return projectList.ToList();
}
Note: This is NOT a best practices guide so do use common sense, it is only meant to get you started
SocialVibe