Wie werden XML-Daten in den Eigenschaften einer benutzerdefinierten C # -Klasse analysiert?

8

Einrichtung

Ich habe das in meiner Funktion Main() .

%Vor%

Ich habe diese Klasse mit ein paar Eigenschaften.

%Vor%

Ich habe diese XML-Datei. Hier ist ein Ausschnitt.

%Vor%

Wie Sie sehen können, gibt es viele <card> Elemente im <cards> root Element. Außerdem kann jedes <card> viele <set> Elemente enthalten. Ich habe die Klasse entsprechend gemacht.

Problem

Wie gehe ich pro <card> durch und weise jeder Eigenschaft die passenden Werte zu?

Was ich versucht habe

Ich habe eine Liste erstellt, die alle Elemente <name> jedes <card> enthält. Ich würde dann diese Liste durchlaufen und einer neuen Instanz der Token -Klasse der Name -Klasse einen Namen zuweisen. Füllen Sie dann meine tokens -Liste mit jeder neuen Instanz aus.

%Vor%

Ich denke, ich könnte dann mehr Listen erstellen, die jedes andere gewünschte Element enthalten und denselben Prozess ausführen, aber es muss einen eleganteren Weg geben, richtig?

BEARBEITEN

Ich habe auch Serialisierung von einer anderen Frage versucht. Aber aus irgendeinem Grund, als ich versuchte, etwas von token auf die Konsole zu schreiben (zB token.Name), hat es nichts geschrieben.

%Vor%

Wahrscheinlich nur eine falsche Implementierung. Wenn das der Fall ist, könnte jemand das, was ich gepostet habe, benutzen und mir die korrekte Implementierung zeigen? Außerdem nehme ich an, dass dies meinen zwei List -Eigenschaften einen oder mehrere Werte geben wird, oder?

BEARBEITEN

Danke für die Hilfe.

EDIT2

Eine Antwort

Nach einigem erfolglosen Hantieren mit der Serialisierung und einigen weiteren Suchvorgängen habe ich eine Implementierung durchgeführt, die funktioniert.

%Vor%

Viel besser als die Anzahl von Lists , die ich zuerst im Sinn hatte. Nicht so prägnant wie die Serialisierung. Aber es tut, was ich brauche.

Danke für die Hilfe.

EDIT4

Ich bin mir nicht sicher, ob diese vielen Änderungen erlaubt sind oder gegen die Etikette. Ich wollte diesen Schnitt nur für zukünftige Leser machen.

Die Sachen im Abschnitt "Eine Antwort" lösen zwar mein Problem, aber die unten von Dave veröffentlichte XML-Serialisierung ist viel besser; es ist flexibler und einfacher zu verwenden / zu ändern. Wählen Sie also die Lösung, die für Ihre Situation mehr Vorteile bietet.

    
KrimCard 22.04.2013, 17:32
quelle

3 Antworten

9

Mithilfe der XML-Serialisierung konnte ich Ihr Snippet in einige Objekte deserialisieren. Ich verstehe Ihre 2 verschiedenen Listenvariablen nicht wirklich, also änderte ich sie in 1 Liste.

Ich bin mir nicht sicher, ob das genau das ist, was Sie versuchen zu erreichen, aber ich glaube, es sollte Ihnen bei der XML-Deserialisierung mehrerer "set" -Elemente helfen.

Ich habe eine Datei mit demselben Snippet namens tokens.xml erstellt, das so bearbeitet wurde, dass es mit Ihrem neuen Layout übereinstimmt.

%Vor%

Ich habe ein paar Klassen erstellt

%Vor%

Der Hauptteil ist wie folgt (Ich weiß, das ist hässlich, aber ich ging schnell, also bitte verbessern)

%Vor%

Im Folgenden sieht die Ausgabe so aus.

    
Dave 22.04.2013, 20:06
quelle
1

Mit Linq zu Xml,

%Vor%

hoffe das hilft.

    
shakib 22.04.2013 20:46
quelle
0

Sieh dir diesen Beitrag an:

XPath und * .csproj

Aber nimm das Folgende und konvertiere die anonymen Typen in deine konkreten Klassen. Es sollte genug sein, um Sie zu beginnen.

%Vor%     
granadaCoder 22.04.2013 17:43
quelle

Tags und Links