Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Escribir xml sin sobreescribir

Iniciado por fernando, Abril 29, 2017, 07:08:50 PM

Tema anterior - Siguiente tema
Abril 29, 2017, 07:08:50 PM Ultima modificación: Abril 29, 2017, 08:46:50 PM por pioj
Buenas tengo este código que me escribe en un xml los datos de dos variables que tengo .Como puedo hacer que me escriba pero sin borrar lo que estaba puesto ya??
 

public void Save() {
        XmlDocument doc = new XmlDocument();
        doc.LoadXml("<Libro></Libro>");
        XmlElement newElem = doc.CreateElement("name");
        newElem.InnerText = "" + text;
        doc.DocumentElement.AppendChild(newElem);
        XmlElement newElem0 = doc.CreateElement("autor");
        newElem0.InnerText = "" + Autor.autor;
        doc.DocumentElement.AppendChild(newElem0);
 
        XmlTextWriter writer = new XmlTextWriter(@"D:\data.xml", null);
        writer.Formatting = Formatting.Indented;
        doc.Save(writer);
    }
}

 
con eso consigo esta estructura 
 

<Libro>
  <name>DATOS DE LA VARIABLE</name>
  <autor>DATOS DE LA VARIABLE</autor>
</Libro>
 

 
pero claro,con la funcion save de arriba lo que ago todo el rato es borrar lo que habia y meter los nuevos datos .Lo que quiero es que me valla guardando todos los datos sin borrar nada
 
Alguna idea de que editar en ese codigo para que funcione como quiero?

Y si te manejas con algun tipo de contenedor? como una lista, con datos en su interior que puede ser classes o structs definidas por vos, por ejemplo:
 

//En tu clase de datos
public class Data
{
public string name;
public string autor;
}
List<Data> dataList = new List<Data>();
 
//Durante el  gameplay meter los datos en el contenedor
dataList.Add(data1);
dataList.Add(data2);
dataList.Add(data3);
 
//En el Save
void Save()
  {
     //...
     
  foreach(Data data in dataList)
     {
        //Escribir en xml lo correspondiente a un Data
     }   
     
  //...
  }

 
La idea no es escribir en todo momento (o si, si es lo que deseas) los xml, sino llenar la lista (de forma aditiva claro) y luego grabar los datos.
 
La otra que no se porque no uso demasiado los xml asi, es/podria ser crear el elemento maestro una sola vez, y cada vez que das Save solo agregar elementos .. ?.. ni idea jajaj

Etiquetas: