Konvertiert String in Variablennamen

8

Ich habe eine XML-Datei, ich habe einen Knoten und ich lese alle ChildNodes. Der Name des childNode stimmt mit einer Variablen überein, die ich mit dem Wert von childNode festlegen muss.

In der Schleife würde ich gerne einstellen:

  • myvar1 bis MyValue1
  • myvar2 bis MyValue2

Der C # -Code:

%Vor%

Der XML-Inhalt sieht so aus:

%Vor%

C # setze Variablen:

%Vor%

Irgendeine Idee?

Danke,

UPDATE 1: Der Wert "field" in der Schleife ist immer Null.

%Vor%     
Kris-I 04.01.2012, 08:28
quelle

5 Antworten

7

Sie können es mit Reflection machen:

%Vor%

RE: UPDATE 1

%Vor%     
Samich 04.01.2012, 08:32
quelle
5

Wenn Sie Variablen basierend auf den Namen von Knoten in XML zuweisen möchten, haben Sie mindestens einige Optionen:

  • Deserialisieren Sie die XML-Struktur in ein Objekt mit entsprechenden Elementnamen
  • Füllen Sie die Variablen mit Reflektion
  • auf
  • Füllen Sie die Variablen mit dynamischen Methodenaufrufen / Ausdrucksbäumen auf, die wissen, wie der Inhalt des XML-Knotens in eine Objekteigenschaft gelesen werden kann.

Alle diese Ansätze schlagen einen eher objektorientierten Ansatz für das Problem vor, der nur einige Variablen auffüllt, aber es wäre einfach, eine leichtgewichtige Struktur mit den entsprechenden Elementen zu erstellen, die durch Lesen des XML-Dokuments gefüllt wird.

>

Sie können auch eine schlüsselbasierte Sammlung (wie zB Dictionary<string, string> ) verwenden, um die Werte zu speichern, wenn Sie nur eine einfache Name / Wert-Sammlung aus dem Quell-XML erstellen möchten.

    
Tim Medora 04.01.2012 08:30
quelle
3

Wenn Sie die Namen und Werte in ein Wörterbuch eingeben, können Sie die Werte einfach über den Namen abrufen:

%Vor%     
Guffa 04.01.2012 08:40
quelle
2

Du könntest entweder tun wie "Standard" gesagt hat, oder du könntest in Reflection schauen. Mit der Type.GetMember(string) -Methode können Sie ein Mitglied mit dem gegebenen Namen (der Tag-Name in Ihrem XML) finden und seinen Wert festlegen.

BEARBEITEN
Samich hat mich geschlagen, also gebe ich ihm +1 - er hat auch einen Beispielcode.

    
Thorsten Dittmar 04.01.2012 08:33
quelle
1

Sie können die XmlSerializer Klasse

aufrufen     
Default 04.01.2012 08:29
quelle

Tags und Links