Iterationen einer XML-Datei in einem Objekt sichern

alberti

Mitglied
Hallo zusammen,

ich habe eine Struktur, welche ich durch einfache Klassen mit Klassenvariablen abgebildet habe:

Code:
[B]HauptStruktur:[/B]

public class HauptStruktur {
	
	public HeaderTyp HeaderObj;
	public String mainPart1;
	public String mainPart2;
	public String mainPart3;
	public String mainPart4;
	public String mainPart5;
	public String mainPart6;

	
}


Code:
[B]Header:[/B]

public class HeaderTyp {
	
	public String Titel; 
	public String Encoding; 
	public String Sprache; 
}



Code:
[B]SpezialTyp:[/B]

public class SpezialStruktur extends HauptStruktur {
	public String spez1;
        public String spez2;
        public String spez3;
        public String spez4;
	public String spez5;
}

Nun ist mein Problem, das ich in diesen "Eigenschaften" Werte eintragen muss.
Allerdings sind die "Eigenschaften" des Headers immer gleich und über der Klasse SpezialStruktur müssen immer wieder neue Werte reingeschrieben werden - genauer bei Jeder Iteration:
Code:
[B]...[/B]
SpezialTyp sp = new SpezialTyp();
sp.Titel = treffer.getValue("treff:titel");
sp.Encoding = treffer.getValue("treff:encoding");
sp.Sprachel = treffer.getValue("treff:sprache");
while (treffer != null) {

			sp.spez1 = treffer.getValue("treff:wert1");
			sp.spez4 = treffer.getValue("treff:wert4");
			sp.spez5 = treffer.getValue("treff:wert5");
			sp.mainPart1 = treffer.getValue("treff:mainWert1");
			sp.mainPart3 = treffer.getValue("treff:mainWert3");

			// Output a summary of the hit:
			System.out.println("Title : " + hit.getTagValue("autn:title"));
			System.out.println("Reference: "
					+ hit.getTagValue("autn:reference"));
			System.out.println("Weight : " + hit.getTagValue("autn:weight")
					+ "\tdatabase: " + hit.getTagValue("autn:database"));
			System.out.println("Summary : "
					+ hit.getTagValue("autn:summary") + '\n');
			// Go to the next hit:
			hit = hit.next("autn:hit");
		}

Ich iteriere dabei über eine XML-Datei, die Methode zum Iterieren selber ist schon gegeben.

Mein Problem ist, wie ich jetzt effektiv alle Werte in einem Objekt speichere.
Wie muss ich meine Klassen anpassen, damit es funktioniert?
Ich hatte schon an einer ArrayList() gedacht, allerdings stehe ich gerade auf dem Schlauch und mir erschließt sich garnichts mehr😕


Ich hoffe einer von euch kann mir weiter helfen 🙂



Beste Grüße, alberti
 
Zuletzt bearbeitet:
Du kannst auf Membervariablen nicht ohne weiteres in einer Schleife oder so zugreifen. Entweder du benutzt stattdessen eine Map, in der du "mainPart1" u.s.w. als Schlüssel und die Werte als, ähm, Werte hast, oder du nutzt Reflection.
 
Hi,

danke für die schnellen Antworten 🙂

Also beim XML einlesen will ich nichts ändern bzw. kann ich auch nicht.

Eine Map denke ich mal wäre hier der falsche Weg - von meinem Verständnis her :bahnhof:

Ich glaube Reflection könnten des Rätsels Lösung sein, allerdings habe ich mich mit Refelction schon ewig nicht mehr befasst. Es wäre super, wenn ihr mir einen Ansatz hierbei zeigen könntet 🙂

Ich versuche es natürlich gleichzeitig weiterhin selbst zu lösen.

Viele Grüße und Besten Dank
 
Zuletzt bearbeitet:
Wenn du den Namen und den Wert eines Feldes hast, das in einem Objekt gesetzt werden soll:

Java:
Field field = myObject.getClass().getField(name);
if(! field.isAccessible()) {
   field.setAccessible(true);
}
field.set(myObject, value);

Alternativ kann man auch über die Setter-Methode gehen (funktioniert im Prinzip genauso, nur mit einem Method-Objekt)
 
Zuletzt bearbeitet:

Zurück
Oben