+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Variablen statt Felder aus XML

Hallo,

ich habe ein C# Programm, bekomme XML Dateien und möchte die entsprechenden Elemente, Textfeldern zuordnen. Mein Problem ist, dass sowohl alle Elemente als auch alle Attribute als Felder anstelle von Variablen dargestellt werden. Gibt es eine Möglichkeit XML Elemente und ggf. auch Attribute als Variablen darstellen zu lassen?

Vielen Dank schon einmal für eure Hinweise.

Dadurch, dass in XML ja tabellarische Daten enthalten sein können, die sich dann mehrfach mit anderen Inhalten wiederholen ist ein Feld / eine Tabelle der natürliche Lebensraum für die Daten :slight_smile: . Sie können aber Felder in den Variablenbereich “spiegeln”, indem Sie einen Handler für den AutoDefineField Event schreiben. In den EventArgs bekommen Sie den Namen und Inhalt aller Felder geliefert und können über (sender as ListLabel).Variables.Add(...); gleichnamige Variablen hinzufügen. Das könnte helfen.

Vielen Dank für die Antwort, das hat zwar schon ein bisschen geholfen, aber so wie ich das sehe lässt sich meine Idee damit noch nicht ganz lösen.

Ich möchte eine Datei (XML, CSV, …) an mein Programm übergeben aus der List and Label dann Versandlabel druckt. Wenn sich an dem Label etwas ändert möchte ich allerdings nur die zu übergebene Datei und das Label Design ändern nicht aber den Quellcode. So wie ich das sehe, müsste ich bei der Lösung jetzt ja jedes mal wenn ich ein Element in der XML Datei hinzufüge auch etwas im Quellcode ändern.

Meine XML:

<Document>
    <Header>
		<Druckername>Warenausgang</Druckername>
		<Labeltyp>SendungslabelS</Labeltyp>
	</Header>
	<Label>
		<Sendungsnummer>12345</Sendungsnummer>
		<Name>Frank</Name>
		<Ort>Hannover</Ort>
	</Label>
	<Label>
		<Sendungsnummer>67890</Sendungsnummer>
		<Name>Benjamin</Name>
		<Ort>Frankfurt</Ort>
	</Label>
</Document>

Wenn ich hier nun noch ein Element <Straße> hinzufügen möchte, möchte ich nichts am Quellcode ändern müssen.

Wenn ich das richtig sehe müssten Sie nichts anpassen - das neue Feld würde automatisch erkannt und dann im Design zur Verfügung gestellt - probieren Sie es einfach einmal aus :slight_smile:.

Mein Fehler lag schon vorher in der Definition von meinem ListLabel Object. Ich hatte nicht richtig definiert, dass es sich um eine Labeldatei handelt:

        //Nutze Label Elemente
        LL.DataMember = "Label";

        //Projekttyp = Label
        LL.AutoProjectType = LlProject.Label;

Nach dem Einfügen der beiden Zeilen funktioniert es nun super.

1 Like