Lectura y escritura de XML

Vamos a ver como tratar básicamente un xml, las maneras de guardarlo y leerlo con CSharp.

¿Que 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>