using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
namespace Recetas.CSharp.R0616
{
public class ModificacionArbolXml
{
public static void Main()
{
Console.WriteLine ();
// Carga del archivo XML:
XElement elementoRaiz = XElement.Load("CatalogoProductos.xml");
// Muestra en la salida estándar el archivo XML original:
Console.WriteLine (elementoRaiz);
Console.WriteLine ("\nPresione Enter para continuar...");
Console.ReadLine ();
// Selecciona todos los elementos Producto:
IEnumerable<XElement> elementosProducto
= from elemento in elementoRaiz.Element("Productos")
.Elements()
where (elemento.Name == "Producto")
select elemento;
// Itera a través de los elementos Producto y cambia su ID:
foreach(XElement elemento in elementosProducto)
{
// Obtiene el ID actual:
int idActual = Int32.Parse((string) elemento.Attribute("ID"));
// Reemplaza el valor actual de ID:
elemento.ReplaceAttributes(new XAttribute("ID", idActual + 1000));
}
// Muestra en la salida estándar el árbol XML modificado:
Console.WriteLine (elementoRaiz);
Console.WriteLine ("\nPresione Enter para continuar...");
Console.ReadLine ();
// Remueve todos los elementos que contienen la palabra "café" en Descripción:
IEnumerable<XElement> elementosCafe = from elemento in
elementoRaiz.Element("Productos").Elements()
where (((string)elemento.Element("Descripcion")).Contains("café"))
select elemento;
foreach(XElement elemento in elementosCafe)
{
elemento.Remove();
}
Console.WriteLine (elementoRaiz);
Console.WriteLine ("Presione Enter para continuar...");
Console.WriteLine ();
// Define un elemento para agregarlo al árbol:
XElement nuevoElemento = new XElement("Producto",
new XAttribute("ID", 100003),
new XElement("NombreProducto", "Café Irlandés"),
new XElement("Descripcion", "Café ron y baileys"),
new XElement("Precio", 4500),
new XElement("Disponible", false)
);
elementoRaiz.Element("Productos").Add(nuevoElemento);
Console.WriteLine (elementoRaiz);
Console.WriteLine ();
}
}
}