Procesamiento de XML en C#
description
Transcript of Procesamiento de XML en C#
![Page 1: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/1.jpg)
Procesamiento de XML en C#
Jordán Pascual Espada
![Page 2: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/2.jpg)
XML (Extensible Markup Language)
Lenguaje de marcado que proporciona un formato para describir datos estructurados.
![Page 3: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/3.jpg)
Tecnologías relacionadas
XSD Esquemas Define la estructura requerida de un documento XML
DTD (Document Type Definition) Definición de los elementos que puede incluir un documento XML
„ XSLT Extensible Stylesheet Language Transformation Transforma el contenido de un documento XML
XPath XML Path Lenguaje utilizado para referenciar elementos en los documentos XML.
XQuery XML Query Lenguaje de consultas
![Page 4: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/4.jpg)
XML en .Net C#
Existen varias alternativas para procesar documentos XML:
XmlReader / XmlWriter
XmlDocument
LINQ (XDocument, XElement,…)
![Page 5: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/5.jpg)
XmlReader - XML .Net C#
XmlReader proporciona métodos para el acceso rápido a datos
No posee almacenamiento en caché
Solamente permite recorrer los nodos hacia delante
![Page 6: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/6.jpg)
XmlReader - XML .Net C#
<uno>
<dos>
<tres>Valor 1</tres>
</dos>
<dos>
<tres>Valor 2</tres>
</dos>
</uno>
![Page 7: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/7.jpg)
XmlReader - XML .Net C#
<uno>
<dos>
<tres>Valor 1</tres>
</dos>
<dos>
<tres>Valor 2</tres>
</dos>
</uno>
![Page 8: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/8.jpg)
XmlReader - XML .Net C#
<uno>
<dos>
<tres>Valor 1</tres>
</dos>
<dos>
<tres>Valor 2</tres>
</dos>
</uno>
- Tipo de Nodo - Nombre - Valor - Atributos
![Page 9: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/9.jpg)
XmlReader - XML .Net C#
1. Construir el XmlReader
![Page 10: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/10.jpg)
XmlReader - XML .Net C#
2. Recorrer los elementos
Salto al siguiente Nodo
![Page 11: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/11.jpg)
XmlReader - XML .Net C#
3. Recorrer los atributos
![Page 12: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/12.jpg)
XmlNodeType
4. Procesar en función del tipo de Nodo XML
XmlNodeType Ejemplo Name Value Atrib
Element <libro> <libro isbn=“9439234832844”>
x x
EndElement </libro>
x
Text
<titulo>El Aleph</titulo> x
XmlDeclaration <?xml version="1.0“ ?>
x x
Processing Instruction
<?xml-stylesheet type="text/xsl"?> x x
Comment <!-- Comentario --> x
![Page 13: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/13.jpg)
XmlReader - XML .Net C#
4. Procesar en función del tipo de Nodo XML
![Page 14: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/14.jpg)
Ejercicio
Desarrollar una aplicación C# utilizando XMLReader capaz de procesar todo el contenido de los ficheros:
Pizza.xml
Libros.xml
Disponibles en el campus virtual
![Page 15: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/15.jpg)
XmlDocument - XML .Net C#
XmlDocument representa un documento XML
Permite cargar archivos y secuencias XmlReader Ofrece diversos métodos para la manipulación del documento
Load() GetElementsByTagName() AppendChild() CreateNode() RemoveChild() Save() …
A partir del XmlDocument se pueden consultar y modificar los
nodos, elementos y atributos del documento XML.
![Page 16: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/16.jpg)
XmlDocument - XML .Net C#
<uno>
<dos>
<tres>Valor 1</tres>
</dos>
<dos>
<tres>Valor 2</tres>
</dos>
</uno>
UNO
DOS
TRES
Valor1
DOS
TRES
Valor2
Árbol DOM
![Page 17: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/17.jpg)
XmlDocument - XML .Net C#
<uno>
<dos>
<tres>Valor 1</tres>
</dos>
<dos>
<tres>Valor 2</tres>
</dos>
</uno>
doc . GetElementsByTagName(“tres”);
XmlNodeList -XmlNode -XmlNode
![Page 18: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/18.jpg)
XmlDocument - XML .Net C#
<uno>
<dos>
<tres>Valor 1</tres>
</dos>
<dos>
<tres>Valor 2</tres>
</dos>
</uno>
XmlNodeList[0] XmlNodeList[1]
XMLNode
¿Cuál es el nombre de los nodos? XMLNodeList[0].Name -> tres
¿Cuál es el valor de los nodos?
XMLNodelist[0].Value = ?
![Page 19: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/19.jpg)
XmlDocument - XML .Net C#
<uno>
<dos>
<tres>Valor 1</tres>
</dos>
<dos>
<tres>Valor 2</tres>
</dos>
</uno>
UNO
DOS
TRES
Valor1
DOS
TRES
Valor2
![Page 20: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/20.jpg)
XmlDocument - XML .Net C#
<uno>
<dos>
<tres>Valor 1</tres>
</dos>
<dos>
<tres>Valor 2</tres>
</dos>
</uno>
XmlNodeList[0] .FirstChild.Value -> Valor 1 XmlNodeList[1] .FirstChild.Value -> Valor 2
![Page 21: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/21.jpg)
XmlDocument - XML .Net C#
UNO
DOS
TRES
Valor1
DOS
TRES
Valor2
![Page 22: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/22.jpg)
XmlDocument - XML .Net C#
Carga de archivo
![Page 23: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/23.jpg)
XmlDocument - XML .Net C#
Elementos por nombre de etiqueta
![Page 24: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/24.jpg)
XmlDocument - XML .Net C#
Nombre y valor de un elemento
<Libro>
<titulo>
valor
Name: Libro Value:
Name: titulo Value:
Name: Value: valor
![Page 25: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/25.jpg)
XmlDocument - XML .Net C#
Atributos de un elemento
![Page 26: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/26.jpg)
Ejercicio
Desarrollar una aplicación C# utilizando XMLDocument capaz de procesar todos los nodos y atributos del fichero libros.xml
![Page 27: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/27.jpg)
LINQ
LINQ (Language-Integrated Query) conjunto de características presentado en Visual Studio 2008
Entre otras muchas cosas LINQ agrega capacidades de consulta eficaces a la sintaxis de los lenguajes C# y Visual Basic.
Incluye patrones estándar y de fácil aprendizaje para consultar y actualizar datos.
Su tecnología se puede extender para utilizar almacenes de datos XML, “LINQ to XML”
![Page 28: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/28.jpg)
LINQ to XML
LINQ to XML interfaz de programación XML en memoria. Habilitada para LINQ trabajar con XML desde .Net.
Permite escribir consultas en el documento XML en memoria para recuperar colecciones de elementos y atributos.
Permite modificar y crear documentos XML en memoria (luego puede ser guardado)
Es diferente de DOM: Proporciona un nuevo modelo de objetos más ligero y fácil
Aprovecha la potencia de los lenguajes .Net
![Page 29: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/29.jpg)
LINQ to XML
Cargar un documento XML utilizando Xelement
Consultar todos los elementos del documento
![Page 30: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/30.jpg)
LINQ to XML
Consultar los elementos que coinciden con un nombre
![Page 31: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/31.jpg)
LINQ to XML
Consultar un atributo de los elementos que coinciden con un nombre
![Page 32: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/32.jpg)
LINQ to XML
Consultar valores de los elementos que coinciden con un nombre y tienen un elemento hijo con cierto valor.
![Page 33: Procesamiento de XML en C#](https://reader033.fdocuments.co/reader033/viewer/2022051515/54c5a9634a7959225e8b45c2/html5/thumbnails/33.jpg)
Ejercicio LINQ to XML
Realizar las siguientes consultas LINQ sobre el fichero libros.xml
Seleccionar todos los autores del documento
Seleccionar los libros con clasificación literatura
Seleccionar los libros con clasificación literatura e idioma Español
Seleccionar el valor del título de los libros con idioma Inglés
Seleccionar el valor del título y la clasificación de todos los libros