Lectura y escritura de XML
![Lectura y escritura de XML](/_next/image?url=https%3A%2F%2Fres.cloudinary.com%2Foriolpuig%2Fimage%2Fupload%2Fq_auto%2Cf_auto%2Fforcode.es%2Fgeneric%2Fforcode_default_kuqkkd.webp&w=1920&q=75)
Vamos a ver como tratar básicamente un xml, las maneras de guardarlo y leerlo con CSharp.
¿Qué es?
XML es un lenguaje de etiquetas que sirve para guardar datos, configuraciones, enviar datos a servidor de una forma más ordenada…
Empezamos
Vamos a ver varias formas de leer y escribir un XML, una forma muy fácil es con el objeto DataSet. Me refiero al objeto DataSet creado por código, no al agregado como un elemento.
Primero vamos a crear un esquema, esto nos irá bien porque hay veces que habrá campos que pueden ser nulos y dependiendo de como los generé, no nos enviarán. Se podría leer directamente el XML con los datos, pero como veremos, leer un squema es sencillo. Para ello vamos a añadir un dataset con una tabla y unos campos, así veremos como se genera.
DataSet ds = new DataSet("bebidas");
ds.Tables.Add("Rones");
ds.Tables["Rones"].Columns.Add("Id", Type.GetType("System.Int32"));
ds.Tables["Rones"].Columns.Add("Nombre", Type.GetType("System.String"));
ds.Tables["Rones"].Columns.Add("Descripcion", Type.GetType("System.String"));
ds.Tables["Rones"].Columns.Add("Tipo", Type.GetType("System.String"));
ds.WriteXmlSchema("E:\TEMP\esquema.xsd");
De esta manera ya hemos creado el esquema. Para leerlo solo tendríamos que hacer un readXmlSchema:
DataSet ds = new DataSet();
ds.ReadXmlSchema("E:\TEMP\esquema.xsd");
Después solo tendríamos que leer el xml con los datos y ya estaría (recordad que les pongo un espacio después del < para que lo muestre correctamente).
<?xml version="1.0" standalone="yes"?>
<xs:schema id="bebidas" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="bebidas" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Rones">
<xs:complexType>
<xs:sequence>
<xs:element name="Id" type="xs:int" minOccurs="0" />
<xs:element name="Nombre" type="xs:string" minOccurs="0" />
<xs:element name="Descripcion" type="xs:string" minOccurs="0" />
<xs:element name="Tipo" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>