2012-04-12 11 views
0

Ich verwende ein DataSet, um die Einstellungen darzustellen, die ich in meinem Projekt habe. Mehr oder weniger der Code ist wie folgt:Schreiben in XML mit Datensätzen, ohne vorhandene Daten zu überschreiben

if (!ValidateSettings(SettingsPath)) //returns false if the settingsfile doesn't consist with the DataSet 
{ 
    dsSettings defaultSettings = new dsSettings(); 
    defaultSettings.ReadXml("settingsTemplate.xml", IgnoreSchema); 
    dsSettings.WriteXml(SettingsFilePath); 
} 

Wenn ich diesen Code ausführen es wird alle Werte in der Vorlagendatei kopieren und die zur SettingsFilePath Datei (Überschreiben der Inhalte in dieser Datei) schreiben.

In der Zukunft sagen wir, dass ich dem DataSet eine Einstellung hinzufüge. Dann möchte ich die alten Einstellungen (möglicherweise vom Benutzer bearbeitet) bleiben und nur die fehlende Einstellung in der XML-Datei aus der Vorlage-Datei hinzufügen.

Kann dies mit einer Option oder etwas an der WriteXml-Funktion oder etwas so einfach wie das getan werden. Oder muss ich die vorhandene Einstellungsdatei lesen und jeden Wert speichern, schreibe das XML und das Überschreiben mit diesen gespeicherten Werten?

Antwort

1

Jedes Mal, wenn Sie WriteXML aufrufen, wird das XML in einem Block gültiger XML-Daten erstellt. In dem Sinne wird es ein Wurzelelement enthalten. Ein anderer Aufruf bedeutet also einen anderen XML-Block. Wenn wir beide zusammenhalten, erhalten wir ein ungültiges XML-Dokument, da es keinen Stammknoten gibt. Deshalb können Sie das, was Sie wollen, einfach nicht erreichen.

Having said, dass Sie eine Abhilfe versuchen:

  1. speichern so viele Dateien wie Sie in einem bestimmten Ordner möchten. Dann lies sie alle in Datatables und füge sie zu einer Datentabelle zusammen.

  2. Erstellen Sie Ihre eigene einzelne XML-Datei. Verwenden Sie dazu die WriteXML-Methode, um das XML in einen StringWriter zu schreiben. Führen Sie solche XML-Blöcke in einen XML-Block zusammen, indem Sie einen eigenen Root-Level-Knoten erstellen und diese dann auf die Festplatte schreiben. Ähnlich beim Lesen lesen Sie zuerst die Datei extrahieren die XML-Blöcke aus dem Root-Knoten und verwenden Sie dann ReadXML aus dem Stream zu lesen.

Verwandte Themen