procesamiento de xml en c#

33
Procesamiento de XML en C# Jordán Pascual Espada

Upload: jordan-p

Post on 26-Jan-2015

107 views

Category:

Education


0 download

DESCRIPTION

Material de apoyo para el procesamiento de XML en C# XML es un Lenguaje de marcado que proporciona un formato para describir datos estructurados. En este documento se enseñan diversas técnicas útiles para procesar documentos en formato XML en la plataforma C#.

TRANSCRIPT

Page 1: Procesamiento de XML en C#

Procesamiento de XML en C#

Jordán Pascual Espada

Page 2: Procesamiento de XML en C#

XML (Extensible Markup Language)

Lenguaje de marcado que proporciona un formato para describir datos estructurados.

Page 3: Procesamiento de XML en C#

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#

XML en .Net C#

Existen varias alternativas para procesar documentos XML:

XmlReader / XmlWriter

XmlDocument

LINQ (XDocument, XElement,…)

Page 5: Procesamiento de XML en C#

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#

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#

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#

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#

XmlReader - XML .Net C#

1. Construir el XmlReader

Page 10: Procesamiento de XML en C#

XmlReader - XML .Net C#

2. Recorrer los elementos

Salto al siguiente Nodo

Page 11: Procesamiento de XML en C#

XmlReader - XML .Net C#

3. Recorrer los atributos

Page 12: Procesamiento de XML en C#

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#

XmlReader - XML .Net C#

4. Procesar en función del tipo de Nodo XML

Page 14: Procesamiento de XML en C#

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#

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#

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#

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#

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#

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#

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#

XmlDocument - XML .Net C#

UNO

DOS

TRES

Valor1

DOS

TRES

Valor2

Page 22: Procesamiento de XML en C#

XmlDocument - XML .Net C#

Carga de archivo

Page 23: Procesamiento de XML en C#

XmlDocument - XML .Net C#

Elementos por nombre de etiqueta

Page 24: Procesamiento de XML en C#

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#

XmlDocument - XML .Net C#

Atributos de un elemento

Page 26: Procesamiento de XML en C#

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#

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#

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#

LINQ to XML

Cargar un documento XML utilizando Xelement

Consultar todos los elementos del documento

Page 30: Procesamiento de XML en C#

LINQ to XML

Consultar los elementos que coinciden con un nombre

Page 31: Procesamiento de XML en C#

LINQ to XML

Consultar un atributo de los elementos que coinciden con un nombre

Page 32: Procesamiento de XML en C#

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#

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