¿Cómo leer un XML y cargarlo en un GridView con ASP.NET?

En este artículo voy a explicar cómo leer los datos de un archivo XML y lo mostrare en un GridView todo esto con ASP.Net.
El archivo XML
Primero crearemos un archivo XML denominado Clientes.xml con los registros que se muestran a continuación
<Clientes> <Cliente> <ClienteID>ALFKI</ClienteID> <CompanyName>Alfreds Futterkiste</CompanyName> <ContactName>Maria </ContactName> <ContactTitle>Agente de ventas</ContactTitle> <Address>Obere Str. 57</Address> <City>Boise</City> <PostalCode>12209</PostalCode> <Country>Germany</Country> <Phone>030-0074321</Phone> <Fax>030-0076545</Fax> </Cliente> <Cliente> <ClienteID>ANATR</ClienteID> <CompanyName>Ana Trujillo Emparedados y helados</CompanyName> <ContactName>Ana Trujillo</ContactName> <ContactTitle>Gerente</ContactTitle> <Address>Avda. de la Constitución 2222</Address> <City>México D.F.</City> <PostalCode>05021</PostalCode> <Country>Mexico</Country> <Phone>555-4729</Phone> <Fax>555-3745</Fax> </Cliente> </Clientes>
Código HTML
El HTML se compone de un control GridView con cuatro columnas que se crearon en el archivo XML. También he especificado OnPageIndexChanging en el GridView, por lo que si el archivo XML tiene un gran número de registros, podemos ver la página de datos inteligente.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="LeerXML_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" RowStyle-BackColor="#A1DCF2" AlternatingRowStyle-BackColor="White" AlternatingRowStyle-ForeColor="#000" runat="server" AutoGenerateColumns="false" AllowPaging="true" OnPageIndexChanging="OnPageIndexChanging"> <Columns> <asp:BoundField DataField="ClienteID" HeaderText="Id" ItemStyle-Width="80" /> <asp:BoundField DataField="ContactName" HeaderText="Name" ItemStyle-Width="150" /> <asp:BoundField DataField="City" HeaderText="City" ItemStyle-Width="150" /> <asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width="150" /> </Columns> </asp:GridView> </div> </form> </body> </html>
Código de servidor VB.NET
Imports System.Data Partial Class LeerXML_Default Inherits System.Web.UI.Page Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Me.IsPostBack Then Me.BindGrid() End If End Sub Private Sub BindGrid() Using ds As New DataSet() ds.ReadXml(Server.MapPath("Clientes.xml")) GridView1.DataSource = ds GridView1.DataBind() End Using End Sub Protected Sub OnPageIndexChanging(sender As Object, e As GridViewPageEventArgs) GridView1.PageIndex = e.NewPageIndex Me.BindGrid() End Sub End Class
Espero que te sea de utilidad este ejemplo y si tienes algún problema, dudas o sugerencias estoy a tus órdenes. Ayúdanos compartiendo este artículo con tus amigos y contactos.
Puedes descargar el ejemplo en esta liga: https://github.com/jiestrada/LeerXML
Saludos y buen día.