Hallo,
ich verarbeite eine XML-Datei mit folgender Struktur:
Diese XML- Datei lese ich über die ReadXML- Methode der Klasse DataSet ein. Das DataSet ist die Datenquelle für ein DataGridView, in dem ich nur die Member vom Typ "Datensatz" ausgeben lasse.
In dem DataGridView kann ich Zeilen hinzufügen und in die XML- Datei speichern. So weit so gut.
Mein Problem ist allerdings, dass die hinzugefügten Zeilen zwar als Struktur "Datensatz" gesichert werden, allerdings erst hinter dem geschlossenen "Datei"- Tag.
Die Daten schreibe ich über die WriteXml- Methode in die XML- Datei:
Das verwendete Schema für den relevanten Teil sieht wie folgt aus:
Wie kann ich erreichen, dass auch neue Datensätze an der richtigen Stelle abgelegt werden, also die Relationen passen? Hätte eigentlich erwartet, dass das automatisch passiert.
Danke und Gruß
Torsten
ich verarbeite eine XML-Datei mit folgender Struktur:
Code:
<Datei Name="xxx.xml"> <Kopfdaten> ... </Kopfdaten> <Daten> <Datensatz> <Name>Test1</Name> <Typ> 1</Typ> </Datensatz> <Datensatz> <Name>Test2</Name> <Typ> 5</Typ> </Datensatz> </Daten> </Datei>
Diese XML- Datei lese ich über die ReadXML- Methode der Klasse DataSet ein. Das DataSet ist die Datenquelle für ein DataGridView, in dem ich nur die Member vom Typ "Datensatz" ausgeben lasse.
Code:
dataSet.ReadXml(fsReadXml, XmlReadMode.ReadSchema); dataGridView.DataSource = dataSet; dataGridView.DataMember = "Datensatz";
Mein Problem ist allerdings, dass die hinzugefügten Zeilen zwar als Struktur "Datensatz" gesichert werden, allerdings erst hinter dem geschlossenen "Datei"- Tag.
Code:
<Datei Name="xxx.xml"> <Daten> <Datensatz> <Name>Test1</Name> <Typ> 1</Typ> </Datensatz> <Datensatz> <Name>Test2</Name> <Typ> 5</Typ> </Datensatz> </Daten> </Datei> <Datensatz> <Name>Hinzugefügte Zeile</Name> <Typ> x</Typ> </Datensatz>
Code:
dataSet.WriteXml(this.PathToSourceFile, XmlWriteMode.WriteSchema);
Code:
<xs:element name="daten" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Datensatz" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" minOccurs="0" /> <xs:element name="Typ" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element>
Danke und Gruß
Torsten