XML-Ausgabe Probleme

Hallo, beschaeftige mich gerade damit, meine flsh-site moeglichst dynamisch zu halten, dass z.B auch ein freund die inhalte aendern kann, da alles ueber XML-Dateien laeuft...
hier sind mal meine codes:
XML-DOK:
Code:
<members> 
4	   <person name="Florian" img="team/member1-gross.jpg" img2="team/member1-klein.jpg"> 
5	    I bin der flo. 
6	   </person> 
7	</members>

mein actionscript:
Code:
var my_xml = new XML(); 
12	my_xml.ignoreWhite = true; 
13	my_xml.onLoad = function(success){ 
14	 
15	if (success){ 
16	 
17	var member1 = my_xml.firstChild.firstChild; 
18	 
19	    _root.membermc1.membername.text = member1.attributes.name; 
20	    _root.membermc1.member_pic.loadMovie(member1.attributes.img2); 
21	 
22	_root.membermc1.onRelease = function(){ 
23	    _root.bahula._visible = true; 
24	    _root.bahula.img_mc.loadMovie(member1.attributes.img); 
25	    _root.bahula.name_mc.text = member1.attributes.name; 
26	    _root.bahula.interview_mc.text = member1.firstChild.nodeValue; 
27	 
28	} 
29	my_xml.load("team/team.xml"); 
30	 
31	_root.bahula._visible = false; 
32	 
33	_root.bahula.button.onRelease = function(){ 
34	    _root.bahula._visible = false; 
35	}

das funktioniert alles perfekt...fast zumindestens... denn ich kriege, wenn ich das "interview" abfrage, also das was zwischen <person> und </person> steht das:

Code:
                I bin der flo.

also 2 leere zeilen jeweils drueber und drunter und dann eben noch der abstand vor dem text.

woher kommt das? wie kann ich das verbessern? brauch ja nur "I bin der flo." ohne leere zeilen und abstand davor.

Gruss Julian
 
Hi,

Whitespaces in Textknoten werden nicht durch "ignoreWhite" entfernt.

Entweder, Du machst es so
Code:
<person name="Florian" img="team/member1-gross.jpg" img2="team/member1-klein.jpg">I bin der flo.</person>
, oder Du trimmst den String nach dem Einlesen:
Code:
String.prototype.trim = function() {
	var clist = new Array(chr(13), chr(10), " ", "	");
	do {
		var found = this.substr(0, 1).inArray(clist);
		if (found) this = this.substr(1);
	} while (found);
	do {
		var found = this.substr(this.length - 1, 1).inArray(clist);
		if (found) this = this.substr(0, this.length - 1);
	} while (found);
	return this;
}

String.prototype.inArray = function(arr) {
	var found = false;
	for (var i in arr) {
		if (this == arr[i]) found = true;
	}
	return found;
}

String.prototype.killBR = function() {
	return this.split(chr(10)).join("");
}
und dann:
Code:
_root.bahula.interview_mc.text = member1.firstChild.nodeValue.trim().killBR();

Gruß
.
 
Hey Tobias, vielen dank fuer die schnelle Antwort!

ich nehm erstmal die erste Methode, die bietet sich gerade an, da ich n bisschen unter Zeitdruck stehe, aber ich greif auf die 2. zurueck, finde ich sehr interessant :)

also nochmals Danke

Gruss Julian
 
Hey, also das klappt schon ganz gut so, bloss jetzt bleibt noch ein Problem:

wenn ich in der XML-datei einen Zeilenumbruch mache kriege ich in flash dafuer zwei, wobei die leerezeile zwischen den texten, die entsteht nichtmal markieren laesst, wenn ich den text markiere... wie kommt das?

weil ich denke, wenn ich deine methode nehme tobias, dann habe ich garkeine zeilenumbrueche mehr oder?

Gruss Julian
 
Hi,

bei meiner Methode sorgt der Prototype "killBR" dafür, dass doppelte Zeilenumbrüche entfernt werden. Grund: Ein Zeilenumbruch besteht in vielen Systemen aus den Zeichen chr(10) ( "\r" ) und chr(13) ( "\n" ). Flash interpretiert beides als Umbruch und setzt daher zwei Umbrüche.

Mit
Code:
str = str.split(chr(10)).join("");
kannst Du die für Flash überflüssigen Zeichen chr(10) entfernen.

Gruß
.
 
Zurück