Download - 10. Usando Datos Xml
Leer y escribir datos XML
Descripción
Descripción de la arquitectura XML en ASP.NET
XML y el objeto DataSet
Trabajar con datos XML
Utilizar el control de servidor Web XML
Lección: descripción de la arquitectura XML en ASP.NET
¿Qué es XML?
Principales tecnologías XML
¿Qué es XML?
<?xml version="1.0"?> <authors> <author ID="1"> <name>Jay</name> </author><!-- There are more authors. --></authors>
<?xml version="1.0"?> <authors> <author ID="1"> <name>Jay</name> </author><!-- There are more authors. --></authors>
Proporciona un método uniforme para describir e intercambiar datos estructurados
Podemos definir nuestros propios elementos y atributos
Los elementos pueden anidarse
XML válido frente a XML con un formato correcto
Instrucción de procesamientoInstrucción de procesamiento
ElementosElementos
AtributosAtributos
ComentariosComentarios
Principales tecnologías XML
Definición de esquemas XML (XSD) Define la estructura requerida de un documento XML válido
Extensible Stylesheet Language Transformation (XSLT) Transforma el contenido de un documento XML fuente en otro
documento que es diferente en formato o estructura
Lenguaje XML Path (XPath) Direcciona partes de un documento XML
Document Object Model (DOM) Modelo de objetos para trabajar programáticamente con
documentos XML en memoria
XML Query (XQuery) Lenguaje de fácil implementación en el que las consultas son
concisas y se entienden fácilmente
Lección: XML y el objeto DataSet
¿Por qué utilizar XML con DataSets?
Descripción de XML y DataSets
Métodos basados en XML del objeto DataSet
Demostración: leer y escribir XML a/desde un DataSet
Práctica: uso del método ReadXml
Crear datos XML anidados
Demostración: crear XML anidado
¿Por qué utilizar XML con Datasets?
XML es el formato universal para intercambiar datos en Internet
Los Datasets serializan datos en forma de XML
XML proporciona un formato cómodo para transferir el contenido de un Dataset a/desde clientes remotos
Los objetos XML sincronizan y transforman datos
Legible por una personaLegible por una persona
Legible por un mainframeLegible por un mainframe
Archivo XML
o
Flujo
Legible por el navegadorLegible por el navegador
Servidor WebServidor Web
DataSet
CortafuegosCortafuegos
Descripción de XML y DataSets
Archivo XML
ObjetoDataSet
ObjetoDataSet
ObjetoXmlDataDocument
ObjetoXmlDataDocument
ObjetoXslTransform
ObjetoXslTransform
Archivo XML o HTML
Base de datos
DataAdapterDataAdapter
ReadXMLReadXML
Doc.SaveDoc.Save
WriteXMLWriteXML
Archivo XSLT
ArchivoXML
ArchivoXML
Utilizan ReadXml para cargar datos de un archivo o flujo
Utilizan WriteXml para escribir datos XML a un archivo o flujo
Utilizan GetXml para escribir datos a una variable de cadena
Los métodos basados en XML del objeto DataSet
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("filename.xml")); DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("filename.xml"));
DataSet ds = new DataSet();SqlDataAdapter da = new SqlDataAdapter("select * from
Authors", conn);da.Fill(ds);ds.WriteXml(Server.MapPath("filename.xml"));
DataSet ds = new DataSet();SqlDataAdapter da = new SqlDataAdapter("select * from
Authors", conn);da.Fill(ds);ds.WriteXml(Server.MapPath("filename.xml"));
string strXmlDS = ds.GetXml(); string strXmlDS = ds.GetXml();
Código de ejemplo de Visual Basic .NET
Demostración: leer y escribir XML a/desde un DataSet
Leer XML
Crear un DataSet
Cargar un DataSet desde un archivo XML
Mostrar en un DataGrid
Escribir XML
Crear un DataSet desde la base de datos
Crear un archivo XML desde un DataSet
Práctica: Uso del método ReadXml
Los estudiantes:
Crearán un DataSet
Cargarán un DataSet desde un archivo XML
Lo mostrarán en un DataGrid
Tiempo: 5 Minutos
De forma predeterminada, la salida de DataTable es secuencial
Para anidar XML, anidar DataRelation
Secuencial Anidado
Crear datos XML anidados
Dim dr As New DataRelation _("name", parentCol, childCol)
dr.Nested = Trueds.Relations.Add(dr)
Dim dr As New DataRelation _("name", parentCol, childCol)
dr.Nested = Trueds.Relations.Add(dr)
<Title name="title1" /><Title name="title2" /><Title name="title3" /><Publisher name="pub1" /><Publisher name="pub2" />
<Title name="title1" /><Title name="title2" /><Title name="title3" /><Publisher name="pub1" /><Publisher name="pub2" />
<Publisher name="pub1" ><Title name="title1" /><Title name="title3" />
</Publisher><Publisher name="pub2" >
<Title name="title2" /></Publisher>
<Publisher name="pub1" ><Title name="title1" /><Title name="title3" />
</Publisher><Publisher name="pub2" >
<Title name="title2" /></Publisher>
DataRelation dr = new DataRelation("name", parentCol, childCol);
dr.Nested = true;ds.Relations.Add(dr);
DataRelation dr = new DataRelation("name", parentCol, childCol);
dr.Nested = true;ds.Relations.Add(dr);
Demostración: Crear XML anidado
WriteXml fuera de un DataSet sin anidación
Visualizar el archivo XML resultante
WriteXml fuera de un DataSet con anidación
Visualizar el archivo XML resultante
Lección: trabajar con datos XML
Descripción de la sincronización de un DataSet con un XmlDataDocument
Cómo sincronizar un DataSet con un XmlDataDocument
Trabajar con un XmlDataDocument
Transformar datos XML con XSLT
Demostración: transformar datos con XSLT
Sincronización de un DataSet con un XmlDataDocument
Base de datos
DataAdapter
DataSet
Tablas
XmlDataDocument
Transformaciones XML
Otros tipos de documentos XML
Navegación por documentos XML
Sincronizado
System.Data System.Xml
Almacenar datos XML en un XmlDataDocument
Almacenar un DataSet en un XmlDataDocument
Cómo sincronizar un DataSet con un XmlDataDocument
Dim ds As New DataSet()'fill in dsDim objXmlDataDoc As New XmlDataDocument(ds)
Dim ds As New DataSet()'fill in dsDim objXmlDataDoc As New XmlDataDocument(ds)
XmlDataDocument objXmlDataDoc = new XmlDataDocument();objXmlDataDoc.Load(Server.MapPath ("file.xml"));
-or-objXmlDataDoc.DataSet.ReadXml(Server.MapPath ("file.xml"));
XmlDataDocument objXmlDataDoc = new XmlDataDocument();objXmlDataDoc.Load(Server.MapPath ("file.xml"));
-or-objXmlDataDoc.DataSet.ReadXml(Server.MapPath ("file.xml"));
DataSet ds = new DataSet();//fill in dsobjXmlDataDoc = new XmlDataDocument(ds);
DataSet ds = new DataSet();//fill in dsobjXmlDataDoc = new XmlDataDocument(ds);
Dim objXmlDataDoc As New XmlDataDocument()objXmlDataDoc.Load(Server.MapPath ("file.xml"))
-or-objXmlDataDoc.DataSet.ReadXml(Server.MapPath ("file.xml"))
Dim objXmlDataDoc As New XmlDataDocument()objXmlDataDoc.Load(Server.MapPath ("file.xml"))
-or-objXmlDataDoc.DataSet.ReadXml(Server.MapPath ("file.xml"))
Trabajar con un XmlDataDocument
Mostrar datos en un control enlazado a lista
Extraer filas del Dataset como XML
Utilizar métodos XML DOM XmlDataDocument hereda de XmlDocument
Aplicar una transformación XSLT Objeto XslTransform
dg.DataSource = objXmlDataDoc.DataSetdg.DataSource = objXmlDataDoc.DataSet
Dim elem As XmlElementelem = objXmlDataDoc.GetElementFromRow _
(ds.Tables(0).Rows(1))
Dim elem As XmlElementelem = objXmlDataDoc.GetElementFromRow _
(ds.Tables(0).Rows(1))
XmlElement elem;elem = objXmlDataDoc.GetElementFromRow(ds.Tables[0].Rows[1]); XmlElement elem;elem = objXmlDataDoc.GetElementFromRow(ds.Tables[0].Rows[1]);
dg.DataSource = objXmlDataDoc.DataSet;dg.DataSource = objXmlDataDoc.DataSet;
Transformar datos XML con XSLT
Crear un XmlDataDocument
Crear el objeto XSLTransform e invocar el método Transform
Dim ds As New DataSet()'fill in DataSet...Dim xmlDoc As New XmlDataDocument(ds)
Dim ds As New DataSet()'fill in DataSet...Dim xmlDoc As New XmlDataDocument(ds)
Dim xslTran As New XslTransform()xslTran.Load(Server.MapPath("PubTitles.xsl"))Dim writer As New XmlTextWriter _
(Server.MapPath("PubTitles_output.html"), _ System.Text.Encoding.UTF8)
xslTran.Transform(xmlDoc, Nothing, writer)writer.Close()
Dim xslTran As New XslTransform()xslTran.Load(Server.MapPath("PubTitles.xsl"))Dim writer As New XmlTextWriter _
(Server.MapPath("PubTitles_output.html"), _ System.Text.Encoding.UTF8)
xslTran.Transform(xmlDoc, Nothing, writer)writer.Close()
Código de ejemplo de #
Demostración: transformar datos con XSLT
Crear un DataSet con dos DataTables
Crear XslTransform
Transformar el documento DataSet en HTML
Lección: uso del control de Servidor Web XML
¿Qué es el control de Servidor Web XML?
Cargar y guardar datos XML
Demostración: uso del control de Servidor Web XML
¿Qué es el control de Servidor Web XML?
<asp:Xml id="Xml1" Document="XmlDocument object to display" DocumentContent="String of XML" DocumentSource="Path to XML Document" Transform="XslTransform object" TransformSource="Path to XSL Document" runat="server"/>
<asp:Xml id="Xml1" Document="XmlDocument object to display" DocumentContent="String of XML" DocumentSource="Path to XML Document" Transform="XslTransform object" TransformSource="Path to XSL Document" runat="server"/>
Escribe a un documento XML
Escribe el resultado de una transformación XSLT a una página Web
Cargar y guardar datos XML
xmlCtl.Document.Save(Server.MapPath("text.xml")) xmlCtl.Document.Save(Server.MapPath("text.xml"))
Control de Servidor Web XML (en el formulario Web Form)
Cargar datos dinámicamente (en la página de código subyacente)
Guardar datos (en la página de código subyacente)
xmlCtl.Document.Load(Server.MapPath("text.xml")) xmlCtl.Document.Load(Server.MapPath("text.xml"))
<asp:Xml id="xmlCtl" runat="server" /> <asp:Xml id="xmlCtl" runat="server" />
xmlCtl.Document.Save(Server.MapPath("text.xml"));
xmlCtl.Document.Save(Server.MapPath("text.xml"));
xmlCtl.Document.Load(Server.MapPath("text.xml"));
xmlCtl.Document.Load(Server.MapPath("text.xml"));
Demostración: uso del control de Servidor Web XML
Agregar el control de Servidor Web XML a un formulario Web Form
Establecer la propiedad DocumentSource para leer un archivo XML
Ver el resultado
Establecer la propiedad TransformSource para leer un archivo XSLT
Ver el resultado