2012-03-24 15 views
5

Soy nuevo en WP7. Seguí this tutorial para leer y escribir un archivo xml, pero cuando leo el archivo xml, solo me muestra la fila superior del archivo xml. No sé cómo comprobar si el programa ha escrito correctamente el archivo xml. Así que .WP7 Leer Escribir Xml en IsolatedStorage

1. Donde comprobar los archivos xml que se guardan en el almacenamiento aislado.

2. Cómo salir de este problema.

Mi código para escribir archivo XML En el almacenamiento aislado:

 using (IsolatedStorageFile myIsolatedStorage =  
          IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("mz1.xml", FileMode.Create, myIsolatedStorage)) 
      { 
       XmlWriterSettings settings = new XmlWriterSettings(); 
       settings.Indent = true; 
       using (XmlWriter writer = XmlWriter.Create(isoStream, settings)) 
       { 
        writer.WriteStartDocument(); 

        writer.WriteStartElement("person"); 
        writer.WriteElementString("node1", "value1"); 
        writer.WriteEndElement(); 
        writer.WriteEndDocument(); 
        writer.Flush(); 
       } 
      } 
     } 

código para leer archivo XML De almacenamiento aislado:

  using (IsolatedStorageFile myIsolatedStorage =   
           IsolatedStorageFile.GetUserStoreForApplication()) 
      { 
       IsolatedStorageFileStream isoFileStream = 
         myIsolatedStorage.OpenFile("mz1.xml", FileMode.Open); 
       using (StreamReader reader = new StreamReader(isoFileStream)) 
       { 
        textBlock1.Text= reader.ReadToEnd(); 
       } 
      } 

Salida:

 <?xml version="1.0" encoding="utf-8"?> 

Respuesta

6

En respuesta a la primera pregunta, se puede descargar e instalar el WP7 aislado Explorador de almacenamiento de CodePlex aquí: http://wp7explorer.codeplex.com/

Es realmente fácil de usar. Solo agrega un par de líneas de código a tu app.xaml.cs y todo listo.

Con respecto a su segunda pregunta, el código que tiene allí se ve bien. Recientemente escribí una pequeña aplicación WP7 que también hizo este tipo de cosas. Aquí es un poco de ese código:

public List<Task> GetTasks() 
{ 
    var tasks = new List<Task>(); 
    using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication()) 
    { 
     if (store.FileExists(XmlFile)) 
     { 
      //store.DeleteFile(XmlFile); 
      //XDocument doc = XDocument.Load(store.OpenFile(XmlFile, FileMode.Open)); 
      using (var sr = new StreamReader(new IsolatedStorageFileStream(XmlFile, FileMode.Open, store))) 
      { 
       XDocument doc = XDocument.Load(sr); 
       tasks = (from d in doc.Descendants("task") 
         select new Task 
            { 
             Category = (string) d.Attribute("category"), 
             Id = (string) d.Attribute("id"), 
             Name = (string) d.Element("name"), 
             CreateDate = (DateTime) d.Element("createdate"), 
             DueDate = (DateTime) d.Element("duedate"), 
             IsComplete = (bool) d.Element("isComplete") 
            }).ToList<Task>(); 
      } 
     } 
    } 
    return tasks; 
} 

su hasta usted, pero es posible que desee considerar el uso de LinqToXml. Hace las cosas un poco más limpias en mi humilde opinión.

que en realidad tienen un blog que hace todo esto publicado aquí:

http://www.ritzcovan.com/2012/02/building-a-simple-windows-phone-apppart-2/

y se puede descargar todo el código también. Espero que lo encuentres útil.

+0

thnx @alex para la respuesta. Instalé el explorador y en su documentación dice que añada una referencia al ensamblado IsolatedStorageExplorer pero el ensamblaje no está presente en mi estudio visual aunque he instalado el explorador – Mj1992

+0

@ Mj1992 - cuando abre el cuadro de diálogo Agregar referencia, simplemente busque el directorio donde vive la biblioteca y agregue una referencia al archivo .dll, normalmente está instalado en C: \ Archivos de programa \ WP7 Explorador de almacenamiento aislado \ Biblioteca - hth – Alex

+0

thnx un lote @Alex por señalar que me olvidé totalmente de eso. – Mj1992

1

estás buscando algo así como this?

2

Su código se ejecuta y funciona bien. He cambiado el resultado se fijara en TextBlock sino variable de cadena, y se da el siguiente resultado:

<?xml version="1.0" encoding="utf-8"?> 
<person> 
    <node1>value1</node1> 
</person> 

supongo TextBlock simplemente muestra la primera línea de los resultados.

+0

sí, tienes razón – Mj1992