2012-02-24 12 views
0

Windowsの電話(7.1)でXMLファイルにユーザーデータを保存しようとしています。このプロセスでは、既存のXMLファイルを開き、新しいノードを挿入してXMLファイルを保存しようとします。 Visual Studio 2010ではコードがエラーなく実行されますが、変更はファイルには反映されません。問題は、コードがファイルを別の場所に保存していることが原因と思われます。 XMLWriterをXDocumentのcreateコマンドで入力パラメータとしてファイルへの塗りつぶしパスで作成しようとしましたが、Windows PhoneシステムのSystem.XML.Linq(2.0.5)のサポートされているバージョンでは許可されていません。次のようにWindows Phone 7.1アプリケーションでXMLファイルを編集する方法

コードは次のとおりです。

  public void AddSwimGoal(SwimGoal SG)  
    { 
     string FileName = "Data/SwimGoals.xml"; 
     XDocument Doc = new XDocument(); 
     Doc = XDocument.Load(@FileName); 

     XElement Root = Doc.Root; 
     XElement NewSG = new XElement("SwimGoal"); 
     XAttribute Dist = new XAttribute("Distance", SG.Distance); 
     XAttribute MaxTD = new XAttribute("MaxTrainingDistance", SG.MaxTrainingDistance); 
     XAttribute ID = new XAttribute("ID", SG.ID); 
     XAttribute Name = new XAttribute("Name", SG.Name); 
     XAttribute StartDate = new XAttribute("StartDate", SG.StartDate); 
     XAttribute EndDate = new XAttribute("EndDate", SG.EndDate); 
     XAttribute DesiredTime = new XAttribute("DesiredTime", SG.Desiredtime); 
     XAttribute Stroke = new XAttribute("Stroke", SG.Stroke); 
     NewSG.Add(Dist, MaxTD, ID, Name, StartDate, EndDate, DesiredTime, Stroke); 
     Root.Add(NewSG); 
     XmlWriter Wr = Doc.CreateWriter(); 
     Doc.Save(Wr); 
    } 
+0

保存したXML文書を再読み込みしようとしましたか? – webdad3

+0

はい、文書は変更されません。 – user640142

答えて

0

これは私が分離ストレージへの私のXMLを保存するために使用されるコードです。あなたはそれがどこか他の場所に保存しているというあなたの考えの中で正しいかもしれません。その問題を解決するには、以下の方法があります。私は今、ファイルが保存されなかった理由は、この作業が行われた時にそれが行われたということであることを認識

      _xdoc = new XDocument(
            new XComment("Created " + DateTime.Now.ToLongTimeString()), 
            new XElement("a", 
            new XElement("b", 
            new XElement("c", this.tb_vehicleName.Text.ToString(), new XAttribute("id", 123)), 
            new XElement("d", "")))); 
+0

"myapp.xml"の代わりに "Data/SwimGoals.xml"を使用し、_xdoc.Save(stream)の代わりにDoc.Save(stream)を使用して、この操作がIsolatedStorageFileStreamで許可されていないというエラーメッセージを受け取りました。このエラーは、次の行で発生しました。IsolatedStorageFileStream stream = store.OpenFile(... – user640142

+0

SwimGoals.xmlを使用してSwimGoals.xmlを使用して、その動作を確認してください。 – webdad3

+0

データを消去する/エラーメッセージを削除して、 Doc.ToStringコマンドで保存される前に文書の構造をチェックしていたが、それはそうだったはずだった。Thanks @Jeff V – user640142

0

   private void saveXML() 
       { 
        using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication()) 
        { 
         IsolatedStorageFileStream stream = store.OpenFile("myapp.Xml", FileMode.Create, FileAccess.Write); 
         _xdoc.Save(stream); 
         stream.Dispose(); 
        } 
       } 

てみはあなたのxmlファイルに要素を追加する方法をアップ変更するにはエミュレータとファイルが保存されたその時、私はエミュレータをシャットダウンします。これはファイルを破壊し、私がファイルを開いたときに変更を見つけることができなかった理由でした。エミュレータを再オープンしたときにファイルを見つけることができなかった場合、ファイルを開くためのコードは、ルートノードだけの空白のドキュメントを置き換えました。

関連する問題