Fehler beim schreiben eines XML-Files

the_lorn

Mitglied
Hi Ihr!

Ich bräuchte mal etwas Hilfe um das Problem einzugrenzen.
Folgendes: Ich hab ein xml-File dessen Inhalt ich in ein DataSet lese.
Xml-File:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<setupInit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <AdapterList>
    <Adapter ID="hamachi">Hamachi-Adapter</Adapter>
    <Adapter ID="pci\ven_8086&amp;dev_4220&amp;subsys_27538086">WLAN-Adapter</Adapter>
    <Adapter ID="pci\ven_8086&amp;dev_103d">LAN-Adapter</Adapter>
    <Adapter ID="tap0801">LAN-Verbindung 12</Adapter>
  </AdapterList>
</setupInit>

Code:
this.dataSet1.ReadXml(fileName,XmlReadMode.Auto);.

das DataSet wiederum lade ich in ein Datagrid (dataSource).

nun füge ich einen Eintrag dem DataGrid/DataSet hinzu
Code:
string adapterName=valueList[1];
this.dataSet1.Tables["Adapter"].LoadDataRow(valueList,true);

Das funktioniert ohne Probleme, doch wenn ich nun mit:
Code:
this.dataSet1.WriteXml(fileName,XmlWriteMode.IgnoreSchema);
den Inhalt schreibe, sieht mein XML-File so aus:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<setupInit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <AdapterList>
    <Adapter ID="hamachi">Hamachi-Adapter</Adapter>
    <Adapter ID="pci\ven_8086&amp;dev_4220&amp;subsys_27538086">WLAN-Adapter</Adapter>
    <Adapter ID="pci\ven_8086&amp;dev_103d">LAN-Adapter</Adapter>
    <Adapter ID="tap0801">LAN-Verbindung 12</Adapter>
  </AdapterList>
 <Adapter ID="neueID">Mein Neuer Eintrag</Adapter>
</setupInit>
Blick auf "Mein Neuer Eintrag". Dieser liegt jetzt außerhalb der <AdapterList> Kann mir jemand sagen woran das liegt? Hab da überhaupt keine Idee.:confused:

Wenn einer von euch also nur einen Ansatz einer Lösung vorweisen kann.....Posten!
 
Ansastz, ja.
Ich hatte auch probleme mit ähnlichen Sachen, aber ich würde dir am ehersten eine Schema-Datei Raten (*.xsd)

In dieser xsd-datei definierst du dein Schema.
Wenn du das hast kannst du mit einem Framework-Tool aus dieser Datei, einen Typisieren Dataset erstellen.
Dies geht folgendermaßen.
1) Kopiere die XSD-Datei in den ordner
..\Programme\Microsoft Visual Studio 8\SDK\v2.0\Bin

2) Öffne die konsole und navigiere zu diesem Verzeichnis

3) Gebe folgendes ein
Code:
xsd.exe nameDerXSDDatei.xsd /d
Der Parameter d sagt aus, das aus dieser XSD-Datei ein Typisierter-DataSet erstellt werden soll.

Wenn du das hast, fügst es in deinem Projekt und du kannst jede Tabelle direkt ansprechen.

Beim schreiben der XML-Datei, wird zuerst mal dein Schema abgefragt und genau nach diesem Schema wird deine XML-Datei geschrieben.

Falls du Probleme mit der XSD haben sollten sag bescheid.
Hoffe ich konnte dir weiter helfen

Gruß
ksk
 
Ich gehe mal davon aus, dass
Code:
<Adapter ID="neueID">Mein Neuer Eintrag</Adapter>
durch einen weiteren Eintrag im DataGrid erzeugt wird. Also musst du vor dem Schreiben diesen Eintrag einfach entfernen, und nach dem Schreiben wieder anfügen, so sollte es am leichtesten gehen. Ich habe zwar noch nie mit DataGrids gearbeitet, aber da kann man sicherlich auch einfach Datensets entfernen
 
Zurück