Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-08-2006, 13:04   #1 (permalink)
// Knäckebrot
 
Benutzerbild von modul47
 
Registriert seit: Mar 2002
Ort: München
Beiträge: 283
xml auslesen mit cdata - klappt nicht

hi leutz,

ich hab mich schon doofgesucht im forum, aber nix hilft mir wirklich weiter...

ich versuche ein xml auszulesen, wo in einem knoten ein cdata drinsteckt, um dort html-formatierten inhalt einzubinden...

es geht da bei um "details" bzw. das "details_array"

Code:
function ladeXML ()
{
	info_xml = new XML ();
	info_xml.ignoreWhite = true;
	info_xml.load (_root.xmlvar);
	info_xml.onLoad = function ()
	{
		head_array = new Array ();
		artikel_array = new Array ();
		details_array = new Array ();
		thumbs_array = new Array ();
		images_array = new Array ();
		farbe_array = new Array ();
		for (var y = 0; y < info_xml.childNodes[0].childNodes[0].childNodes.length; y++)
		{
				head_array[y] = info_xml.childNodes[0].childNodes[y].childNodes[0].childNodes[0].nodeValue;
				artikel_array[y] = info_xml.firstChild.childNodes[y].childNodes[1].childNodes[0].nodeValue;
				details_array[y] = info_xml.firstChild.childNodes[y].childNodes[5].childNodes[0].firstChild.nodeValue;
				//details_array[y] = info_xml.firstChild.childNodes[y].childNodes[5].childNodes[0].nodeValue;
				thumbs_array[y] = info_xml.firstChild.childNodes[y].childNodes[3].childNodes[0].nodeValue;
				images_array[y] = info_xml.firstChild.childNodes[y].childNodes[4].childNodes[0].nodeValue;
				farbe_array[y] = info_xml.firstChild.childNodes[y].childNodes[2].childNodes[0].nodeValue;
		}
		geladen ();
		this.details.checkTextLength ();
	};
}
//////////////////////////////////////////////////////////////////////////////////
this.LadeObj = new LoadVars ();
this.LadeObj.load (_root.xmlvar);
this.LadeObj.onLoad = ladeXML;
das xml sieht im auszug so aus:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<root>
	<produkt>
		<headline>Daunenpelz Minna 1</headline>
		<artikel>TS 344564-1</artikel>
		<farbe>1,3,4,6</farbe>		    
<pics_sm>bps1_sm.jpg,bps2_sm.jpg,bps3_sm.jpg,bps4_sm.jpg</pics_sm>
		<pics_bg>bps1.jpg,bps2.jpg,bps3.jpg,bps4.jpg</pics_bg>
		<details><![CDATA[1Größte Erfolge: Paralympische City Weltmeisterschaft: Nächster großer Wettkampf:Biathlon Weltcup Paralympics 2006 in Turin]]</details>
	</produkt>
der auskommentierte teil in der array-zuweisung funktioniert, wenn ich das cdata aus dem knoten rausnehme. dann habe ich allerdings keine möglichkeit, html-tags zu verarbeiten. damit meine ich auch nicht nur einfache formatierungen, sondern es müssen links und breaks, etc. die über php/cms in das xml geschrieben werden ausgelesen und dargestellt werden können...

beim traven des aufrufs oder arrays bekomme ich leerzeilen, "undefined" oder "null", je nachdem ich mit den knoten und child rumspiele...

die funktion geladen, die aufgerufen wird, weißt dann den textfeldern die inhalte zu, etc...

wenn dazu jemand eine antwort, lösung oder alternative hat wäre ich dafür sehr dankbar.

einen schönen sonntag, danke,

tom
modul47 ist offline   Mit Zitat antworten
Alt 27-08-2006, 13:52   #2 (permalink)
Mac User
 
Benutzerbild von prizma
 
Registriert seit: Jul 2006
Ort: Berlin
Beiträge: 167
soweit ich weiß, können CDATA Elemente nur in htmlText dargestellt werden.

Also: deinTextfeld.html=true;

o.ä.

ich würd übrigens innerhalb der onLoad Funktion "this" statt "info_xml" benutzen.

Wichtig ist auch, wann du Deine Arrays tracerst...(am besten nach fertigem Laden, also am besten nach Aufruf der geladen() Funktion).
__________________
Schöne Grüße, best regards
prizma

Geändert von prizma (27-08-2006 um 13:53 Uhr)
prizma ist offline   Mit Zitat antworten
Alt 27-08-2006, 13:55   #3 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
erst mal das xml richtig schreiben. da fehlt was: ]] > </details>
und dann mal das script aufräumen ;-)
Code:
function ladeXML() {
	info_xml = new XML();
	info_xml.ignoreWhite = true;
	info_xml.load("test.xml");
	info_xml.onLoad = function(ok) {
		if (ok) {
			head_array = [];
			artikel_array = [];
			details_array = [];
			thumbs_array = [];
			images_array = [];
			farbe_array = [];
			var inf = info_xml.firstChild.childNodes;
			for (var y = 0; y<inf.length; y++) {
				var infy = inf[y].childNodes;
				head_array.push(infy[0].firstChild.nodeValue);
				artikel_array.push(infy[1].firstChild.nodeValue);
				farbe_array.push(infy[2].firstChild.nodeValue);
				thumbs_array.push(infy[3].firstChild.nodeValue);
				images_array.push(infy[4].firstChild.nodeValue);
				details_array.push(infy[5].firstChild.nodeValue);
			}
		}
	};
}
ladeXML();
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (27-08-2006 um 14:03 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 27-08-2006, 13:59   #4 (permalink)
Mac User
 
Benutzerbild von prizma
 
Registriert seit: Jul 2006
Ort: Berlin
Beiträge: 167
lol, stimmt ;-)
__________________
Schöne Grüße, best regards
prizma
prizma ist offline   Mit Zitat antworten
Alt 27-08-2006, 20:27   #5 (permalink)
// Knäckebrot
 
Benutzerbild von modul47
 
Registriert seit: Mar 2002
Ort: München
Beiträge: 283
Zitat:
Zitat von prizma
soweit ich weiß, können CDATA Elemente nur in htmlText dargestellt werden.

Also: deinTextfeld.html=true;
ist, bei der zuweisung der inhalte ins textfeld, findet sich abe in der funktion geladen()... die ich nicht oben stehen habe...

Zitat:
Zitat von prizma

ich würd übrigens innerhalb der onLoad Funktion "this" statt "info_xml" benutzen.
ja? du meinst z.b.
this.ignoreWhite = true; oder
this.info_xml.ignoreWhite = true;

wenn ersteres, wie geht das? das this bezieht sich doch im prinzip auf den mc wo ich grade bin und nicht auf das objekt info_xml, das ich ja mit den inhalten der xml generiere...

und dickes danke für dein adlerauge, hgseib, das war der hauptfehler...
hab ich einfach nicht gesehen... menno, das ärgert mich immer sowas...

danke euch beiden,

lg,
tom
modul47 ist offline   Mit Zitat antworten
Alt 27-08-2006, 20:30   #6 (permalink)
Mac User
 
Benutzerbild von prizma
 
Registriert seit: Jul 2006
Ort: Berlin
Beiträge: 167
hi,

ne, ich meine "nur" innerhalb der onLoad Funktion. Aber erspar Dir das...ist wohl doch nicht von Bedeutung. ;-))

Funktioniert das jetzt mit CDATA nun?
__________________
Schöne Grüße, best regards
prizma
prizma ist offline   Mit Zitat antworten
Alt 27-08-2006, 23:04   #7 (permalink)
// Knäckebrot
 
Benutzerbild von modul47
 
Registriert seit: Mar 2002
Ort: München
Beiträge: 283
ja, danke, funktioniert nun alles... lag nur an dem fehlenden ">"

lg, tom
modul47 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele