Aquí les muestro un ejemplo sencillo del uso de esta API.
Las clases principales son XPathDocument que nos permite cargar el documento a utilizar, XPathNavigator que nos permite realizar las consultas deseadas y XPathIterator que nos trae los resultados de la consulta.
También existe la interface IXPathNavigable que al ser implementada nos permite usar otro tipo de fuentes de datos que no sean XML.
En este ejemplo no explico detalles sobre XPath puesto que este es un blog de .Net y no de XML pero si quieres saber mas acerca de esta tecnología puedes visitar el tutorial de XPath en http://www.w3schools.com/XPath/default.asp.
Consideremos el siguiente xml:
1: <?xml version="1.0"?>
2: <Peliculas>
3: <Pelicula>
4: <Titulo>Mazinger</Titulo>
5: <Director>Jackie chan</Director>
6: <Estrenado>1975-03-19T00:00:00</Estrenado>
7: <Actores>
8: <Actor>
9: <Nombre>John Wayne</Nombre>
10: <Nacimiento>1915-10-23T00:00:00</Nacimiento>
11: <Roles>
12: <Rol>
13: <NombrePelicula>Mazinger</NombrePelicula>
14: <NombreRol>Estrella</NombreRol>
15: </Rol>
16: </Roles>
17: </Actor>
18: </Actores>
19: </Pelicula>
20: <Pelicula>
21: <Titulo>Terminator</Titulo>
22: <Director>James Cameron</Director>
23: <Estrenado>1985-02-14T00:00:00</Estrenado>
24: <Actores>
25: <Actor>
26: <Nombre>Arnold</Nombre>
27: <Nacimiento>1953-10-11T00:00:00</Nacimiento>
28: <Roles>
29: <Rol>
30: <NombrePelicula>Terminator</NombrePelicula>
31: <NombreRol>Protagonista</NombreRol>
32: </Rol>
33: <Rol>
34: <NombrePelicula>Terminator</NombrePelicula>
35: <NombreRol>Enemigo</NombreRol>
36: </Rol>
37: </Roles>
38: </Actor>
39: <Actor>
40: <Nombre>Linda Hamilton</Nombre>
41: <Nacimiento>1972-08-12T00:00:00</Nacimiento>
42: <Roles>
43: <Rol>
44: <NombrePelicula>Terminator</NombrePelicula>
45: <NombreRol>Protagonista</NombreRol>
46: </Rol>
47: <Rol>
48: <NombrePelicula>Terminator</NombrePelicula>
49: <NombreRol>Perseguida</NombreRol>
50: </Rol>
51: </Roles>
52: </Actor>
53: </Actores>
54: </Pelicula>
55: </Peliculas>
1: XPathDocument peliculas = new XPathDocument("peliculas.bak.xml");
2: XPathNavigator pelNav = peliculas.CreateNavigator();
3: XPathNodeIterator actoresIt = pelNav.Select("//Actor");
4: Console.WriteLine("Todos los actores");
5: while(actoresIt.MoveNext()) {
6: Console.WriteLine("Nombre: " + actoresIt.Current.SelectSingleNode("Nombre").Value);
7: Console.WriteLine("Fecha de nacimiento: " + actoresIt.Current.SelectSingleNode("Nacimiento").Value);
8: }
No hay comentarios:
Publicar un comentario