Leyendo documentos YAML en .NET Core
En un artículo anterior, comentaba las ventajas y desventajas de YAML y cuándo utilizarlo.
En este artículo sin embargo, vamos a ver con un sencillo ejemplo escrito en C# con .NET Core, cómo utilizar una librería de .NET que nos permite trabajar con documentos YAML y cómo hacerlo.
Iniciaremos un nuevo proyecto de .NET Core con Visual Studio y C# como lenguaje de programación.
Abriremos NuGet y seleccionaremos el paquete YamlDotNet que nos permitirá trabajar con documentos YAML en nuestra aplicación de .NET.
De los paquetes que aparecen, seleccionaremos YamlDotNet.NetCore.
YamlDotNet soporta de momento la especificación 1.1 de YAML (la última versión es la 1.2).
Una vez hecho esto, vamos a escribir nuestro código.
Lo que vamos a hacer es leer el contenido de un documento YAML y recorrerlo mostrando su información.
El documento YAML original del que voy a partir es:
# An employee record teachers: - name: Rodolfo Langostino age: 44 phoneNumber: +34678901234 - name: María Rosa Pescanova age: 45 phoneNumber: +34678905678
Dentro del proyecto agregaré un using únicamente:
using YamlDotNet.RepresentationModel;
Las acciones generales que realizaré serán la de leer el documento YAML, para lo cuál meteré su contenido en un objeto StringReader de .NET.
var stringReader = new StringReader(YAML_DOCUMENT);
Posteriormente cargaré ese contenido dentro de la clase YamlStream de la librería YamlDotNet.
var yaml = new YamlStream(); yaml.Load(stringReader);
Una vez cargado el contenido, mapearé el nodo del primer documento YAML (en mi ejemplo sólo tengo uno) y nos situaremos en el nodo principal.
var mapping = (YamlMappingNode)yaml.Documents[0].RootNode;
Una vez hecho esto, recorreré todos los elementos de ese nodo para mostrar su información.
foreach (var entry in mapping.Children)
Dentro del nodo recorreré los hijos para obtener los elementos.
var items = (YamlSequenceNode)mapping.Children[new YamlScalarNode("teachers")]; foreach (YamlMappingNode item in items)
De esta manera, obtendremos una salida en pantalla de la información que contiene el documento YAML de partida.
El código fuente de este ejemplo lo podrás encontrar en mi repo de GitHub en este enlace.
Happy Coding!