Laden...

XML to Datagrid

Erstellt von CyberHunter vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.748 Views
C
CyberHunter Themenstarter:in
131 Beiträge seit 2007
vor 11 Jahren
XML to Datagrid

Hallo zusammen,

In meiner Silverlight 4 Anwendung bekomme ich Daten von einem Webservice welcher sich die Daten aus SQL zieht.
Diese Daten bekomme ich als XML-String vom Webservice zurück.

Nun muss ich diese Daten in einem Datagrid anzeigen, mein Problem ist jedoch ich weiss nicht wie die XML - Daten aufgebaut sind, diese können stark variieren, das kann grob gesagt heute eine Tablle von Autos sein, morgen eine von Personen, daher kann ich mir nicht eigene Objekte bauen und das XML dann in eine List<T> parsen.

Hat jemand eine Idee bzw. einen Tipp wie ich die XML Daten in mein Datagrid bekomme?

Danke für eure Hilfe
CyberHunter

6.911 Beiträge seit 2009
vor 11 Jahren

Hallo CyberHunter,

ein grobes Schema wird für die Daten wohl existieren und daraus kannst du mit Linq2Xml und anonymen Typen etwas aufbauen und dann gegen das DataGrid binden.

Kannst du exemplarische Beispiele für das XML bringen?

Solltest du aber Einfluss auf den Webservice haben, so ändere diesen ab.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

C
CyberHunter Themenstarter:in
131 Beiträge seit 2007
vor 11 Jahren

Hallo gfoidl,

Danke für deine Antwort.

Ja ich habe einfluss auf den Webserivce, aber wie würdest du diesen anpassen?

Die XML Daten sind eingentlich ganz einfach aufgebaut und basieren auf einer System.Data.DataTable:


<DocumentElement>
     <DS>
           <Vorname>Max</Vorname>
           <Nachname>Mustermann</Nachname>
           .............
     </DS>
      <DS>
           <Vorname>Susi</Vorname>
           <Nachname>Sorglos</Nachname>
           .............
      </DS>
        .............
</DocumentElement>

Und das ganze kann dann eben auch mit komplett anderen "Spalten" daher kommen:


<DocumentElement>
     <DS>
           <Marke>Audi</Marke>
           <Gewicht>1,8 t</Gewicht>
           .............
     </DS>
      <DS>
           <Marke>BMW</Marke>
           <Gewicht>1,6 t</Gewicht>
           .............
      </DS>
        .............
</DocumentElement>

Den gedanken an Anonyme Typen hatte ich auch schon, aber dann müsste ich ja wissen wieviele Properties ich brauche und wie diese Namentlich heissen sollen.

Danke für deine Hilfe
CyberHunter

J
641 Beiträge seit 2007
vor 11 Jahren

Hier gibts ein Beispiel: Reading XML documents using LINQ to XML

cSharp Projekte : https://github.com/jogibear9988

6.911 Beiträge seit 2009
vor 11 Jahren

Hallo CyberHunter,

und basieren auf einer System.Data.DataTable

dann übertrag die DataTable und binde gegen diese. Geht das (von den Anforderungen her)?

Bei den anonymen Typen müsstest du die Spaltenbezeichnung speichern in einer allgemeiner Eigenschaft wie Spalte1, Spalte2, usw. und dann für die Werte extra.

Ev. wäre aber ein ExpandoObject (aus der DLR) auch passend. Die tatsächlichen Eigenschaften kannst du vom XML auslesen und dann dynamisch das Objekt aufbauen.

Aber das Übertragen der DataTable wäre einfacher.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

J
641 Beiträge seit 2007
vor 11 Jahren

DataTable gibts in SilverLight nicht!

cSharp Projekte : https://github.com/jogibear9988

6.911 Beiträge seit 2009
vor 11 Jahren

Hallo jogibear9988,

verdammt, wusste ich nicht - danke.

Schau dir mal das ExpandoObject an (das gibts in Silverlight, gerade geprüft 😉). Ich denke, das ist eine brauchbare Möglichkeit.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

F
10.010 Beiträge seit 2004
vor 11 Jahren

DataSet/DataTable gibt es nicht im Lieferumfang, aber sehr wohl für Silverlight.

ADO.Net DataSet for Silverlight Applications