2011-04-12 6 views
0

私はC#を使用してxmlドキュメントを作成しています。私はそれを一度作成する場合はすべてが大丈夫ですが、私は2回目(プログラムを閉じずに)再作成しようとするとエラーメッセージが表示され、rubishはxmlファイルの最下部に書き込まれます。c#エラーを使用してxmlを生成する

私はこの質問の答えを以前に見つけたと確信していますが、見つけられません。

私はXML文書などを更新した後に何かを終了しないという事実とは関係がありますが、私は正確に何を閉じる必要があるのか​​覚えていません。

ご迷惑をかけますようお願い申し上げます。私は説明が難しいと思う。

コード:

using (FileStream READER = new FileStream(fpath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
     { 
       System.Xml.XmlDocument Template = new System.Xml.XmlDocument();// Set up the XmlDocument // 
       Template.Load(READER); //Load the data from the file into the XmlDocument // 

       //**********Grab nodes to be written to******** 


       using (FileStream WRITER = new FileStream(fpath, FileMode.Open, FileAccess.Write, FileShare.ReadWrite)) 
       { 
        //Set up the filestream (READER) // 
        //Write the data to the filestream 
        Template.Save(WRITER); 
+3

後可能であれば、エラーメッセージとおそらくいくつかのコード。 –

+0

xmlが2回目に書き込むときに最後に追加されるゴミが原因でxmlが正しくないため、エラーメッセージが表示される理由があります。一度それを削除すると、問題は解決します。 – IwillGetThere

+0

間違った場所にノードを挿入している可能性はありますか?たとえば、ルートノードは1つだけにする必要がありますが、ファイルを開いて下の方にコンテンツを追加し、ルートノード内に挿入しないと不正なXML文書がある – Prescott

答えて

1

あなたがリーダーを閉じる必要があり読み、同じファイルにfpath

を書くあなたが含まれている場合にそれを理解しやすくなるでしょうTemplate.Load(READER);

using (FileStream READER = new FileStream(fpath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
    { 
     System.Xml.XmlDocument Template = new System.Xml.XmlDocument();// Set up the XmlDocument // 
     Template.Load(READER); //Load the data from the file into the XmlDocument // 
    } 

    //**********Grab nodes to be written to******** 


    using (FileStream WRITER = new FileStream(fpath, FileMode.Open, FileAccess.Write, FileShare.ReadWrite)) 
    { 
    //Set up the filestream (READER) // 
    //Write the data to the filestream 
    Template.Save(WRITER); 
    ... 
    } 
+0

どうすればいいのですか? – IwillGetThere

+0

'Template.Load(READER) ; '私の答えのコードのように(またはREADERがまだ必要な場合はそれ以降)、' WRITER'を開く前に。 – manji

関連する問題