Neue Frage zu XML im Dataset

06/05/2009 - 08:00 von Frank White | Report spam
Hallo NG,

ich habe noch eine weitere Verstàndnisfrage zum Umgang mit XML in Datasets.
Ich habe mit diesem Snippet eine XML-Datei in ein Dataset geladen:

Dim XMLDaten As New DataSet
XMLDaten.ReadXml("Pfad:\Testformate.xml", XmlReadMode.Auto)

Die XML-Datei sieht beispielsweise so aus:

<?xml version="1.0" encoding="iso-8859-1"?>
<Testformate>
<Test name="Test A">
<Item name="Aufgabe 1" kurzname="A1">
<Antwortmöglichkeit>B</Antwortmöglichkeit>
<Antwortmöglichkeit>C</Antwortmöglichkeit>
</Item>
<Item name="Aufgabe 2" kurzname="A2">
<Antwortmöglichkeit>B</Antwortmöglichkeit>
<Antwortmöglichkeit>C</Antwortmöglichkeit>
</Item>
</Test>
<Test name="Test B">
<Item name="Aufgabe 1" kurzname="A1">
<Antwortmöglichkeit>A</Antwortmöglichkeit>
<Antwortmöglichkeit>B</Antwortmöglichkeit>
</Item>
<Item name="Aufgabe 2" kurzname="A2">
<Antwortmöglichkeit>0</Antwortmöglichkeit>
<Antwortmöglichkeit>1</Antwortmöglichkeit>
</Item>
</Test>
</Testformate>

Wenn ich mir jetzt die Tabellen im Dataset durch Bindung an ein DataGridView
anschaue, z.B. die Tabelle "Antwortmöglichkeit" so gibt es dort nur eine
Spalte in der untereinander alle Werte die als Antwortmöglichkeit vorkommen
aufgeführt werden. Wie kann ich hier denn die Relation zum übergeordneten
Knoten in der XML-Datei herstellen. Dort ist ja die Relation durch die
Hierarchie vorgegeben, im Dataset kann ich die nicht erkennen. Wie weiß ich
also welche Antwortmöglichkeiten zu welchem Item und welchem Test gehören?
In relationalen Datenbanken gàbe es dazu ja IDs über die sich das verknüpfen
làsst, wie kann ich das hier erledigen? Vielen Dank schon einmal für eure
Antworten und viele Grüße

Frank
 

Lesen sie die antworten

#1 Peter Fleischer
06/05/2009 - 08:52 | Warnen spam
"Frank White" schrieb im Newsbeitrag
news:eG5M%

ich habe noch eine weitere Verstàndnisfrage zum Umgang mit XML in
Datasets. Ich habe mit diesem Snippet eine XML-Datei in ein Dataset
geladen:

Dim XMLDaten As New DataSet
XMLDaten.ReadXml("Pfad:\Testformate.xml", XmlReadMode.Auto)

Die XML-Datei sieht beispielsweise so aus:

<?xml version="1.0" encoding="iso-8859-1"?>
<Testformate>
...
Wenn ich mir jetzt die Tabellen im Dataset durch Bindung an ein
DataGridView anschaue, z.B. die Tabelle "Antwortmöglichkeit" so gibt es
dort nur eine Spalte in der untereinander alle Werte die als
Antwortmöglichkeit vorkommen aufgeführt werden.



Hi Frank,
deine XML-Datei hat keine Schemainformation und du nutzt ein leeres
untypisiertes DataSet. Beim Einlesen wird da etwas generiert, was
höchstwahrscheinlich nicht deinen Vorstellungen entspricht.

Wie kann ich hier denn die Relation zum übergeordneten Knoten in der
XML-Datei herstellen. Dort ist ja die Relation durch die Hierarchie
vorgegeben, im Dataset kann ich die nicht erkennen. Wie weiß ich also
welche Antwortmöglichkeiten zu welchem Item und welchem Test gehören? In
relationalen Datenbanken gàbe es dazu ja IDs über die sich das verknüpfen
làsst, wie kann ich das hier erledigen? ...



Es gibt verschiedene Weg. Der einfachste Weg ist, Schemainformation in die
XML-Datei einzufügen. Wenn das nicht möglich ist, dann wàre der nàchste
Schritt das Einlesen von Scheminformation vor dem Lesen der Daten oder auch
gleich die Nutzung typisierter DataSets. Wenn das alles wegen der
unpassenden Struktur der XML-Daten nicht passt, dann belibt nur noch das
Einlesen der Knoten mit Übertragen der Daten in das DataSet. Am einfachsten
geht das mit LinQtoXML und typisierten DataSets.

Viele Grüsse
Peter

Ähnliche fragen