domingo, 6 de marzo de 2016

Receta C# No. 6-4: Buscar un Elemento XML usando su Nombre

Índice

1. Introducción
2. Palabras Clave
3. Problema
4. Solución
5. Discusión de la Solución
5.1 El método GetElementsByTagName
6. Conclusiones
7. Literatura & Enlaces

1. Introducción

Esta nueva receta C# muestra el proceso a seguir para encontrar un elemento XML por medio de su nombre. Nuevamente se hace uso de la clase System.Xml.XmlDocument; en particular se usa el método GetElementsByTagName. Para la sección práctica se utiliza el catálogo de productos definido en las recetas previas de esta serie de manipulación de documentos XML con C#, para demostrar su utilidad.

2. Palabras Clave

  • .NET
  • Documento XML
  • Elemento
  • Nodo
  • XML

3. Problema

Se requiere de un mecanismo de recuperación de elementos desde un documento XML donde baste especificar el nombre natural del elemento.

4. Solución

La clase XmlDocument (namespace System.Xml) con su método GetElementsByTagName permite la búsqueda de todas las ocurrencias en un documento XML.

5. Discusión de la Solution

5.1 El método GetElementsByTagName

El método GetElementsByTagName ("XmlDocument.GetElementsByTagName Method", 2016) -System.Xml.XmlDocument- permite especificar un nombre de nodo -o etiqueta- como parámetro de búsqueda de ocurrencias sobre un documento XML. Finalizada su ejecución retorna un objeto XmlNodeList ("XmlNodeList Class", 2016). Esta lista de nodos contiene los resultados de la búsqueda en orden.


Esta es la declaración sintáctica de GetElementsByTagName:

public virtual XmlNodeList GetElementsByTagName(
string name
)


El único parámetro que recibe corresponde con el nombre (o etiqueta) del elemento a buscar.

6. Práctica: Calcular el Valor Total de Productos

En el siguiente ejemplo se demuestra cómo calcular el valor total de una serie de productos especificados en un documento XML: CatalogoProductos.xml.



En la línea 11 creamos un nuevo objeto XmlDocument con el que se cargará el archivo XML CatalogoProductos.xml (línea 12). Sobre la línea 15 invocamos el método GetElementsByTagName con el parámetro string "Precio". Una vez finalizada la búsqueda en todo el documento XML se retornará un objeto XmlNodeList con todas las ocurrencias encontradas.


En las líneas 22-27 se itera el objeto XmlNodeList -precios-, para calcular el precio total de los productos almacenados en el archivo XML.


Compilación:

csc /t:exe CalculoPrecioProductos.cs


Ejecución assembly:

.\CalculoPrecioProductos.exe


Demostración ejecución assembly local:
Ejecución assembly CalculoPrecioProductos.exe
Figura 1. Ejecución assembly CalculoPrecioProductos.exe.

7. Conclusiones

Se ha comprendido cómo a través del método GetElementsByTagName es posible obtener una lista de resultados con todas las ocurrencias de un elemento -etiqueta- en un documento XML.

En la próxima receta se enseñará cómo obtener los nodos de un namespace específico de un documento XML.

8. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.
XmlDocument.GetElementsByTagName Method (String) (System.Xml) (2016, marzo 6). Recuperado desde: https://msdn.microsoft.com/en-us/library/dc0c9ekk%28v=vs.110%29.aspx.
XmlNodeList Class (System.Xml) (2016, marzo 6). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.xml.xmlnodelist%28v=vs.110%29.aspx.


V

1 comentario:

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.