2017-07-04 5 views
1
<Data> 
    <configs> 
    <someEntry>"value1"</someEntry> 
    </configs> 
    <profiles> 
    <someEntry>"value2"</someEntry> 
    </profiles> 
</Data>es> 
    <someEntry>"value3"</someEntry> 
    </profiles> 
</Data> 

これは</Data>es>です。 この例では、 "value3" DataRowを削除しようとしたときに発生します。 Visual StudioのDataTableのビジュアライザは、私のテーブルは大丈夫であることを示しているが、それはこの方法であることsuppossedだが、DataSetがそのように保存されます:予想通りc#DataSet.WriteXml(fileStream、XmlWriteMode.IgnoreSchema);私のXMLファイルを破損します

<Data> 
    <configs> 
    <someEntry>"value1"</someEntry> 
    </configs> 
    <profiles> 
    <someEntry>"value2"</someEntry> 
    </profiles> 
</Data> 

のFileStreamすべてを使用して開始する前に働いていました。

FileStream filestream = new FileStream(xmlLocation, FileMode.Open, FileAccess.ReadWrite); 

答えて

1

あなたはそれがすでに存在する場合、ファイルは切り捨てられませんFileMode.Openを、使用している:これは私が私のFileStreamを開始する方法です。

だけではなく、File.Createを使用します。

using (var stream = File.Create(directory)) 
{ 
    ... 
} 

(あなたがそれを編集した前に、あなたのポストがもともと持っていたが、私はほとんどすべてでFile.*簡素化メソッドを呼び出すことがはるかに簡単見つけるとあなたはが、代わりにFileMode.Createを指定することができます場合によっては)

+0

実際には、私のFileStreamはグローバルオブジェクトなので、 'using'で行うことはできません。また、ファイルの作成だけを担当するもう1つのストリームがあり、それが破棄されます。 –

+1

@Defulluality:私は悪い考えです。正直言って、同じストリームをコード全体に使用できるのであれば、それを適切に処理するのがずっと難しくなります。しかし基本的には、ファイルを書き直すときに、現在のコンテンツを切り捨てるようにしたいということです。 –

+0

お時間をいただきありがとうございます。私はこのtomorowを試してみると私は返信します。 –

関連する問題