Autor Beitrag
storck
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 07.01.09 09:25 
Hallo zusammen!

Ich arbeite gerade an folgender Problemstellung: es liegt eine Datenbank im XML Format vor und diese muss in ein anderes XML Format (also eine andere Struktur) umgewandelt werden. Bin momentan aber noch unschlüssig, welcher der eleganteste Weg ist. Ein XSD File des Zielformats wäre vorhanden.

danke schon mal im voraus!

lg, storck
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 07.01.09 11:19 
Hallo,

DataSet1.ReadXml, Daten kopieren in die andere Struktur, DataSet2.WriteXml. Da es sich um unterschiedliche Strukturen handelt (wie Du schreibst), geht es vermutlich nicht anders, als die Daten einzeln zu kopieren, etwa so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
foreach(DataRow row in OldTable.Rows) {
   DataRow newRow = NewTable.NewRow();
   newRow.BeginEdit();
   newRow["Feld0"] = row["Feld17"];
   newRow.EndEdit();
   NewTable.Rows.Add(newRow);
}

Vorher muss vermutlich noch (manuell) ein xsd-Schema für DataSet1 erstellt werden.

Die Namen von Tabellen und Feldern können auch direkt geändert werden: Einlesen, Namen von DataTable und DataColumn ändern, speichern.

Für mehr Hilfe bräuchte ich mehr Informationen über die Art und den Umfang der Änderungen.

Gruß Jürgen
storck Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 07.01.09 11:40 
user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

DataSet1.ReadXml, Daten kopieren in die andere Struktur, DataSet2.WriteXml. Da es sich um unterschiedliche Strukturen handelt (wie Du schreibst), geht es vermutlich nicht anders, als die Daten einzeln zu kopieren, etwa so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
foreach(DataRow row in OldTable.Rows) {
   DataRow newRow = NewTable.NewRow();
   newRow.BeginEdit();
   newRow["Feld0"] = row["Feld17"];
   newRow.EndEdit();
   NewTable.Rows.Add(newRow);
}

Vorher muss vermutlich noch (manuell) ein xsd-Schema für DataSet1 erstellt werden.

Die Namen von Tabellen und Feldern können auch direkt geändert werden: Einlesen, Namen von DataTable und DataColumn ändern, speichern.

Für mehr Hilfe bräuchte ich mehr Informationen über die Art und den Umfang der Änderungen.

Gruß Jürgen


Vielen Dank für die schnelle Antwort!

Es ist also tatsächlich so, dass mir das vorhandene XSD-File vom Zielformat nichts bringt? Denn die Änderungen sind schon sehr wesentlich und umfangreich (CANdb soll in FIBEX umgewandelt werden, falls dir das was sagt).

lg, storck
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 07.01.09 12:01 
user profile iconstorck hat folgendes geschrieben Zum zitierten Posting springen:
Es ist also tatsächlich so, dass mir das vorhandene XSD-File vom Zielformat nichts bringt?

Eindeutig nichts. Zum Quell- und Ziel-DataSet wird jeweils ein eigenes xsd-Schema benötigt.

user profile iconstorck hat folgendes geschrieben Zum zitierten Posting springen:
Denn die Änderungen sind schon sehr wesentlich und umfangreich (CANdb soll in FIBEX umgewandelt werden, falls dir das was sagt).

Nein, sagt mir gar nichts. Ich habe grade mal auf Wikipedia nachgelesen. Vielleicht gibt es bei den Links unter CAN-Bus etwas Hilfe.

Gruß Jürgen
storck Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 07.01.09 12:20 
user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:

Eindeutig nichts. Zum Quell- und Ziel-DataSet wird jeweils ein eigenes xsd-Schema benötigt.


Hab jetzt den Tipp bekommen, dass ich für jeden Table meines XSD einen eigenen Datentyp erstellen, von diesem Typ eine Variable erstellen, befüllen und an einen XMLWriter übergeben kann. Somit bräuchte ich dann nur die jeweiligen Daten aus der Quelldatei suchen.

Weißt du was ich meine bzw. gibts Erfahrungen damit?

lg, storck