2012-03-24 14 views
5

Ich bin neu in WP7. Ich folgte this Tutorial zum Lesen und Schreiben einer XML-Datei, aber wenn ich die XML-Datei lesen, zeigt es mir nur die oberste Zeile der XML-Datei.Ich weiß nicht, wie Sie überprüfen, ob die XML-Datei ordnungsgemäß vom Programm geschrieben wird. So .WP7 Lesen Sie schreiben Xml in IsolatedStorage

1.Wo überprüfen Sie die XML-Dateien, die im isolierten Speicher gespeichert sind.

2.Wie aus diesem Problem herauskommen.

Mein Code XML-Datei im isolierten Speicher zu schreiben:

 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(); 
       } 
      } 
     } 

-Code XML-Datei von isolierten Speicher zu lesen:

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

Ausgang:

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

Antwort

6

Als Antwort auf Ihre erste Frage, können Sie die WP7 Isolated Storage Explorer von Codeplex hier herunterladen und installieren: http://wp7explorer.codeplex.com/

Es ist wirklich einfach zu bedienen. Fügen Sie einfach ein paar Zeilen Code zu Ihrer app.xaml.cs hinzu und Sie sind fertig.

In Bezug auf Ihre zweite Frage, Der Code, den Sie dort haben, sieht OK aus. Ich habe vor kurzem eine kleine WP7-App geschrieben, die genau diese Art von Ding gemacht hat. Hier sind einige dieser Code:

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; 
} 

seine bis zu Ihnen, aber Sie können mit LinqToXml zu betrachten. Es macht die Dinge ein bisschen sauberer IMHO.

Ich habe eigentlich einen Blog-Post, die all dies hier geschrieben hat:

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

und Sie können auch den gesamten Code herunterladen. Ich hoffe, Sie finden es hilfreich.

+0

thnx @alex für die Antwort.Ich installierte den Explorer und in seiner Dokumentation heißt es, Verweis auf IsolatedStorageExplorer Assembly hinzuzufügen, aber die Baugruppe ist nicht in meinem Visual Studio, obwohl ich den Explorer – Mj1992

+0

installiert habe @ Mj1992 - wenn Sie das Dialogfeld zum Hinzufügen von Referenzen öffnen, navigieren Sie einfach zu dem Verzeichnis, in dem die Bibliothek lebt und fügen Sie einen Verweis auf die .dll hinzu - normalerweise in C: \ Programme \ WP7 Isolated Storage Explorer \ Library - hth – Alex

+0

thnx alot @Alex für den Hinweis, dass ich das total vergessen habe. – Mj1992

1

Sie suchen etwas wie this?

2

Ihr Code wird ausgeführt und funktioniert einwandfrei. Ich habe das Ergebnis nicht verändert in TextBlock- zu setzen, sondern auf String-Variable, und es gibt die folgenden:

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

Ich denke, der Textblock zeigt nur die erste Zeile der Ergebnisse.

+0

yeah Sie sind richtig thnx – Mj1992