¿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.
