Probleme beim laden von Variablen vom Servlet

cowo

Grünschnabel
Hallo
Bin neu hier und hätt da auch gleich mal ne Frage.
Ein Kommilitone hat ein Servlet programmiert, daß die Daten einer Prozesssimulation bereitstellt. Wahlweise als HTML- oder XML-Daten.
Meine Aufgabe war/ist es dazu eine Visualisierung in Flash zu programmieren. An sich läuft sie auch schon, aber bei der Übergabe der Variablen und deren Werte hakt es noch etwas.
Im Moment ist es so gelöst, daß ich ein LoadVars-Objekt erzeuge, über load die Variablen abrufe und je nach Wert MCs ein-/ausblende bzw. Textfelder setze. Also so:
Code:
loadData = new LoadVars();
loadData.onLoad = function () {
	if (this.pumpe1_an==0) {pumpe1._visible=false;} else {pumpe1._visible=true;};
        abgefuellt.text=Math.round(this.abgefuelltTank1);
        //usw. für alle MC
loadData.load("http://*IP-Adresse*/Server/Server?type=html&list=");

Die Antwort des Servlet sieht dann so aus:
HTML:
<html>
     <head>
     </head>
     <body>
          pumpe1_an=0&abgefuelltTank1=7.0&...........
     </body>
</html>

Jetzt ist das Problem, daß der allererste Wert nicht richtig gelesen wird. Das funktioniert nur einwandfrei, wenn das Servlet die HTML-Tags weglassen würde. Das Servlet darf ich aber nicht ändern. Gibts da irgendein workaround oder mach ich vielleicht irgendwas falsch?

Ne Alternative wäre noch das Servlet mit "type=xml" aufzurufen. Dann sieht die Antwort so aus:
Code:
<?xml version='1.0' encoding='ISO-8859-1'?>
<daten>
     <item id='pumpe1_an'>0</item>
     <item id='abgefuelltTank1'>8.0</item>
     usw........
</daten>
Aber ich habs einfach nicht geschafft das irgendwie auszulesen. Muss aber auch dazu sagen, dass ich Flash-Neuling bin. Das hier ist mein erstes Projekt. Bin für jede Hilfe dankbar.

Grüße
cowo
 
Hallo,

anstatt eines LoadVars-Objekts empfehl ich dir die Verwendung der XML-Klasse, die XML-Daten parsen und DOM-ähnlich auslesen kann:

Code:
loadData = new XML();
loadData.ignoreWhite = true;
loadData.onLoad = function () {
	//erstelle ein Objekt als Daten-Container
	var obj = {};
	//<daten>-Knoten in der Variable n speichern
	var n = this.firstChild;
	//Fülle obj ab: den id-Wert als Member-Name, den Knoten-Inhalt als Wert
	for (var i = 0; i < n.childNodes.length; i++) {
		var id = n.childNodes[i].attributes.id;
		obj[id] = n.childNodes[i].firstChild.nodeValue;
	}
	//Nun hast du entsprechende Variablen in obj gespeichert und kannst damit verfahren, wie dir beliebt
	trace (obj.pumpe_1);
	trace (obj.abgefuelltTank1);
}
loadData.load("http://*IP-Adresse*/Server/Server?type=xml&list=");

Schau dir vielleicht auch mal in der Hilfe das Thema XML an.

gruss
 
Wow ging das schnell. :suspekt:
Und es funktioniert sogar, danke dir.
Ich hatte mir zwar Sachen zum XML Objekt durchgelesen, habe es aber nicht geschafft die ID und den Wert getrennt auszulesen.
Vielleicht noch ne allgemeine Frage.
Der Flashfilm ist zehn Frames lang und läuft im loop. Also im zehnten Frame steht "gotoAndPlay(1)". Im ersten Frame steht das von dir verbesserte Script und ca. fünfzig Zeilen if-then-else Anweisungen.
Kann man das irgendwie eleganter lösen?
Grüße
cowo
 
Zurück