2017-10-17 10 views
0

私は基本的に、XMLファイルにポッドキャストを追加しようとしており、最終的にアプリケーションのさまざまな部分のデータを使って同じXMLからそれらを取得しようとしています。C#でXMLをシリアライズ

データをXMLに書き込むのに、アプリケーション(デバッグ)を再起動して「送信」ボタンを押すたびにXMLファイルが0のエントリにリセットされます。

提出コード:XMLに保存

PodcastList podList = new PodcastList(); 

    private void btnAddPod_Click(object sender, EventArgs e) 
    { 
     var podUrl = txtAddPod.Text; 
     var podName = txtEnterName.Text; 

     podList.AddPod(podUrl, podName, 0); 

     Xml.SaveListData(podList.GetPodcastList(), "Podcasts.xml"); 
    } 

public static void SaveListData(object obj, string filename) 
    { 
     var serializer = new XmlSerializer(obj.GetType()); 

     using (var stream = new StreamWriter(filename)) 
     { 
      serializer.Serialize(stream, obj); 
     } 
    } 

に私は、アプリケーションは、私が提出し、新鮮なオブジェクトを持って押すたびに新しいXMLファイルを作成しますね。私は間違って何をしていますか?歓声

+0

には、問題を再現する関連コードとxmlサンプルを掲載する必要があります。 – derloopkat

+0

'/ bin/Debug'の外にファイルを保存しようとしましたか? – Michael

+3

XMLファイルを**読み込むためのコードはありません**。 Addを押すたびに、新しいファイルが作成されます。このファイルは、既存のファイルを上書きします(存在する場合)。 – Serge

答えて

0

ポッドキャストリストpodList =新しいPodcastList();クラスレベルにあります。

状態を維持したい場合は、XMLファイルを再ロードします。コンストラクタ内またはロード時にPodcastListにファイルをデシリアライズします。その後、コレクションを保持し再利用してXMLにデータを書き戻すことができますファイル。

0

XMLファイルは、開閉タグが必要なため、一般的には「添付」されません。反対に、ログファイルのようなその他のタイプのテキストファイルは、追加すると少し意味があります。

serializer.Serializeに電話すると、ファイル全体が上書きされます。

プログラムで実行する必要があるのは、起動時に既存のXMLファイルを読み込み、PodcastList()という名前で保存することです。あなたのプログラムはそれを(メモリ内に)追加し、リスト全体をファイルとして保存することができます。

関連する問題