Announcement

Collapse
No announcement yet.

XML-Datei in DataTable - Fehler beim schreiben in neue DataTable

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

  • XML-Datei in DataTable - Fehler beim schreiben in neue DataTable

    Hallo Zusammen,

    ich benutze VS2012, NET 4.5.

    Ich lese aus einer XML-Datei die Daten in ein DataSet und kopiere die Tabelle anschließend in eine neue Datentabelle.

    Nun möchte ich bestimmte Zeilen aus dieser Datentabelle in eine neue Datentabelle schreiben. Dies führt jedoch zu einem Fehler.
    $exception {"Spalte 0 wurde nicht gefunden."} System.Exception {System.IndexOutOfRangeException}

    Nachdem ich mit dem Internet nicht weitergekommen bin, versuche ich es über dieses Forum.

    Die XML-Datei wird korrekt eingelesen. Das kopieren der Datentabelle ist einwandfrei (Anzeige in VS zeigt alle Daten).

    Die Exception wird durch die ForEach-Schleife (foreach (DataColumn column in dt.Columns)) geworfen.

    Hier der Code:
    [highlight=c#]
    public DataTable LeseZeilenDataTableXml(string absoluterPfadDerXmlDatei, params object[] zeilen)
    {
    try
    {
    var ds = new DataSet();
    var dt = new DataTable();
    var dtr = new DataTable();

    ds.ReadXml(absoluterPfadDerXmlDatei);
    dt = ds.Tables[0].Copy();

    DataRow row;

    int rowCount = 0;

    foreach (DataRow rows in dt.Rows)
    {
    string s = dt.Rows[rowCount][0].ToString();

    if (zeilen.Contains(s))
    {
    row = dtr.NewRow();
    int colCount = 0;

    foreach (DataColumn column in dt.Columns)
    {
    row[colCount] = rows[column];
    ++colCount;
    }

    dtr.Rows.Add(row);
    }

    ++rowCount;
    }

    return dtr;
    }
    catch (Exception e)
    {
    string text =
    string.Format(
    "Fehler im Lesen der XML-Datei {0}. " +
    "\r\nSchwerwiegender Fehler. Bitte melden Sie diesen Fehler dem Systemadministrator." +
    "\r\n\r\nWindows-Fehlermeldung:: {1}",
    absoluterPfadDerXmlDatei, e.Message);
    _meldung.FehlerMeldung(text, "Fehlerhaftes Lesen der XML-Datei " + absoluterPfadDerXmlDatei);

    return null;
    }
    }
    [/highlight]

    Vielen Dank für Eure Hilfe

    Grüße

  • #2
    dtr hat keine Strukturinfo wie die Tabelle aufgebaut ist. Wenn du also von dtr mit NewRow einen DataRow ranholst hat die keine Spalten weil du an dtr keine Spaltendefinition festgelegt hast.
    Du mußt also erst die Tabellendefinition von dt nach dtr kopieren bevor du irgendwas machst z.B. durch Clone();
    [HIGHLIGHT=C#]
    var dt = new DataTable();
    //var dtr = new DataTable();
    var dtr = dt.Clone();
    [/HIGHLIGHT]

    Comment


    • #3
      Vielen Dank. Da war wieder der Wald den ich vor lauter Bäumen übersehen habe.

      Comment

      Working...
      X