Announcement

Collapse
No announcement yet.

Daten aus DataGridView über DataSet in XML-Datei speichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten aus DataGridView über DataSet in XML-Datei speichern

    Hallo,

    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";
    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.


    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>
    Die Daten schreibe ich über die WriteXml- Methode in die XML- Datei:
    Code:
    dataSet.WriteXml(this.PathToSourceFile, XmlWriteMode.WriteSchema);
    Das verwendete Schema für den relevanten Teil sieht wie folgt aus:

    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>
    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
Working...
X