Reading XML Attributes using LINQ to XML in Silverlight

This code snippet demonstrates how to load an XML file and reads its nodes and their attributes in a Silverlight application using LINQ to XML.


We are building a Website in Silverlight that needs to access some data from a XML file.

Here is an example of XML document.


<?xml version="1.0" encoding="utf-8" ?>

<Contents>
  <
Content Title="Mahesh Chand"
         
ImageUri="ADO.NET Programming with C#"
         
RedirectText="APress"
         
RedirectUri="2003"
         
Description="44.95" > 
 
</
Content> 

  <Content Title="Raj Beniwal"
         
ImageUri="Mastering Silverlight"
         
RedirectText="Mindcracker"
         
RedirectUri="2010"
         
Description="49.95" />

  <Content Title="Mike Gold"
         
ImageUri="Visual C# Programming"
         
RedirectText="Microgold Press"
         
RedirectUri="2005"
         
Description="44.95" /> 

</Contents>

 

Before you can use LINQ to XML, you must add a reference to the System.Xml.Linq.dll assembly and import the following namespace in the code.

using System.Xml.Linq;

 

The following code snippet loads XML file in a Silverlight application using LINQ to XML and reads all of the attributes of the nodes.  To run this code, create a Silverlight Web application, add a Button and a ListBox control and write the following code on the Button click event handler.

// Load XML document
XDocument
doc = XDocument.Load("Authors.xml");

// Get all nodes of the root node

IEnumerable<XNode> nodes =
    from xmlNode in doc.Root.Nodes()
    select xmlNode;

        

foreach (XNode node in nodes)
{          

    XElement elm = (XElement)node;

    IEnumerable<XAttribute> attList =
    from at in elm.Attributes()
    select at;

    foreach (XAttribute att in attList)
    {

        listBox1.Items.Add(att.Name + " : " + att.Value);
    }

}