Buscar este blog

viernes, 22 de mayo de 2009

CARGANDO INFORMACION DE UN ARCHIVO XML A UN DATASET

Entre las labores del dia de hoy tenia que cargar el contenido de un archivo xml a un dataset, y pues como no tenia ni idea de como hacerlo tuve que googlear un poco, despues de probar un poco de codigo que habia encontrado al fin encontre el que me funciono.

En este codigo lo que se hace es crear un string que contiene el path fisico del archivo xml el cual se encuentra dentro de mi mismo proyecto web. Posterior a esto declaro un nuevo DataSet y esta parte que viene ahora es la que no comentaban en la mayoria de sitios que encontre y era el crear un nuevo DataTable. Asi que se crea el nuevo DataTable se le asignan las columnas que tendra que son creadas en relacion a los campos que tiene el archivo XML, despues de esto agregamos la DataTable al DataSet, por cierto el nombre de la tabla tambien se debe escribir en funcion del archivo XML, despues utilizamos el metodo ReadXml del DataSet y despues de esto podemos ordenar el cotenido en funcion de algun campo si asi lo deseamos.

En mi caso deseaba agregar el resultado a un DropDownList, asi que a cotinuacion dejo un ejemplo del archivo XML y el codigo que utilice en VB.NET.

archivo.xml

<?xml version="1.0" encoding="utf-8" ?>
<reporte>
<nombre_reporte>
<id>1</id>
<nombre>Reporte 1</nombre>
</nombre_reporte>

</reporte>

archivo.aspx.vb


Dim archivoXml As String = Server.MapPath("./Includes/XML/XMLReportNameFile.xml")
Dim dsXmlData As DataSet = New DataSet
Dim dtXmlTable As DataTable = New DataTable("nombre_reporte")
dtXmlTable.Columns.Add("id", Type.GetType("System.Int32"))
dtXmlTable.Columns.Add("nombre", Type.GetType("System.String"))
dsXmlData.Tables.Add(dtXmlTable)
dsXmlData.ReadXml(archivoXml, XmlReadMode.InferSchema)
dsXmlData.Tables("nombre_reporte").DefaultView.Sort = "id"
ddlReporte.DataSource = dsXmlData.Tables("nombre_reporte").DefaultView
ddlReporte.DataTextField = "nombre"
ddlReporte.DataValueField = "id"
ddlReporte.DataBind()


PD: Por cierto para poder utilizar la clase DataSet se debe de importar la libreria System.Data y el ddlReporte es el nombre del dropdownlist

No hay comentarios: