Zurück   Flashforum > Flash und Server > Flash mit XML und Webservices

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-08-2008, 14:24   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 51
CDATA xml funktioniert nicht

hallo zusammen,

folgendes problem. ich lese mit diesem script eine xml-datei ein:

daten = new XML();
daten.ignoreWhite = true;
daten.load("alle_daten.xml");
daten.onLoad = function (success) {
if (success) {
biotext = daten.firstChild.childNodes[0].firstChild;
infotext = daten.firstChild.childNodes[1].firstChild;
gotoAndStop(2);
}
}


dann im bild2 erzeuge ich zwei textfelder mit jeweils diesem script:

var infotextFormat:TextFormat = new TextFormat();
infotextFormat.align = "left";
infotextFormat.font = "Gotham-Medium";
infotextFormat.size = 12;
infotextFormat.color = 0x222222;
infotextFormat.leading = 3;

this.createTextField("teext0", 10, 10, 10, 340, 400);
this.teext0.text = biotext;

this.teext0.setTextFormat(infotextFormat);
this.teext0.html = true;
this.teext0.wordWrap = true;
this.teext0.multiline = true;
this.teext0.embedFonts = true;
this.teext0.selectable = false;

meine alle_daten.xml datei hat folgende struktur:

<?xml version='1.0' encoding='utf-8'?>
<felder>
<bio>hier steht die bio</bio>
<info>hier steht die info</info>
</felder>

das problem ist, wenn ich jetzt versuche links innerhalb der xml datei einzufügen und
dazu folgende änderungen vornehme:

<?xml version='1.0' encoding='utf-8'?>
<felder>
<bio>hier steht die bio</bio>
<info><![CDATA[hier steht die info<a href="...">und ein link</a>]]></info>
</felder>

bekomme ich nur noch ein undefined als ausgabe im textfeld...
kann mir jemand sagen wo da mein denkfehler liegt?

vielen dank im vorraus,
stuntman
stuntman ist offline   Mit Zitat antworten
Alt 28-08-2008, 15:17   #2 (permalink)
asFlasher
 
Benutzerbild von ksw24
 
Registriert seit: Jul 2006
Beiträge: 1.136
Hallo,
wird denn die XML als solche korrekt im Browser ausgegeben? Oder gibt es da schon Probleme?

Gruß ksw24
ksw24 ist offline   Mit Zitat antworten
Alt 28-08-2008, 15:24   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 51
hallo,

also ohne die änderung, also das einfügen der CDATA-tags, wird die xml-datei absolut sauber ausgegeben.
keine probleme.

ich habe gerade mal ausprobiert die text-zuweisung so zu ändern:

this.teext0.text = biotext;
in
this.teext0.htmlText = biotext;

dann bekomme ich das als ausgabe:

&lt;a href&quot;...&quot;&gt;und ein link&lt;/a&gt;

was sagt man dazu?

grüsse
stuntman
stuntman ist offline   Mit Zitat antworten
Alt 28-08-2008, 15:30   #4 (permalink)
asFlasher
 
Benutzerbild von ksw24
 
Registriert seit: Jul 2006
Beiträge: 1.136
Hallo,
hast du das textfeld auch auf textfeld.html=true gesetzt?

Gruß ksw24
ksw24 ist offline   Mit Zitat antworten
Alt 28-08-2008, 15:36   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 51
Zitat:
Zitat von stuntman Beitrag anzeigen
this.teext0.setTextFormat(infotextFormat);
this.teext0.html = true;
this.teext0.wordWrap = true;
this.teext0.multiline = true;
this.teext0.embedFonts = true;
this.teext0.selectable = false;
ja. sollte doch so getan sein, oder?

ich hab gerade mal spasseshalber das markup in dreamweaver prüfen lassen. da gibt er mir folgende meldung:

Unterminated character reference[xml]

das macht er bei der gegenprobe mit ner anderen xml-datei nicht. ich kann aber keinen unterschied zwischen den beiden entdecken...
stuntman ist offline   Mit Zitat antworten
Alt 28-08-2008, 15:39   #6 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 51
das dreamweaver ding scheint nicht das problem gewesen zu sein. ich hatte irgendwo im text in der xml-datei noch "&#43" stehen. da hatte ich versucht zeichen zu ersetzen. hab das jetzt rausgenommen und nun meldet die markup-überprüfung auch keine fehler mehr...
stuntman ist offline   Mit Zitat antworten
Alt 28-08-2008, 15:49   #7 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 51
also. stand der dinge jetzt.

in der xml datei siehts so aus:

<mix>
<![CDATA[<a href"http://www.xyz.de">hier der link</a>]]>
</mix>

und in flash so:

this.createTextField("teext2", 30, 396, -35, 340, 200);
this.teext2.text = mixtext;

this.teext2.setTextFormat(infotextFormat);
this.teext2.html = true;
this.teext2.wordWrap = true;
this.teext2.multiline = true;
this.teext2.embedFonts = true;
this.teext2.selectable = false;

ausgabe im textfeld:

&lt;a href&quot;http://www.xyz.de&quot;&gt;hier der link&lt;/a&gt;

muss ich evtl. noch etwas anderes beim laden der xml-datei beachten abgesehen von dem ignore.White?

daten = new XML();
daten.ignoreWhite = true;
daten.load("alle_daten.xml");
daten.onLoad = function (success) {

grüsse
stuntman
stuntman ist offline   Mit Zitat antworten
Alt 28-08-2008, 16:22   #8 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 51
ok. kleine neuerung.
ich habe das auslesen der xml-datei leicht verändert:

daten = new XML();
daten.ignoreWhite = true;
daten.load("alle_daten.xml");
daten.onLoad = function (success) {
if (success) {
biotext = daten.firstChild.childNodes[0].firstChild.nodeValue;
infotext = daten.firstChild.childNodes[1].firstChild.nodeValue;
mixtext = daten.firstChild.childNodes[2].firstChild.nodeValue;
gotoAndStop(2);
}
}

sonst alles unverändert.
jetzt bekomme ich immerhin diese ausgabe:

<a href="http://www.xyz.de">hier der link</a>

leider immernoch nicht ganz das was ich will...:-(

noch irgendjemand ne idee?

danke,
grüsse
stuntman
stuntman ist offline   Mit Zitat antworten
Alt 28-08-2008, 16:51   #9 (permalink)
meistens harmlos
 
Benutzerbild von rena
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 17.643
So aus dem Bauch raus stimmen hier Reihenfolgen nicht
Zitat:
Zitat von stuntman Beitrag anzeigen
this.createTextField("teext2", 30, 396, -35, 340, 200);
this.teext2.text = mixtext; //wenn html-Ausgabe, dann htmlText statt text

this.teext2.setTextFormat(infotextFormat);
this.teext2.html = true; //html-Fähigkeit wird hier erst _nach_ der Textzuweisung hinzugefügt, sollte vorher sein
this.teext2.wordWrap = true;
this.teext2.multiline = true;
this.teext2.embedFonts = true;
this.teext2.selectable = false;
Funktioniert es so rum (und mit htmlText statt text)?
Code:
this.createTextField("teext2", 30, 396, -35, 340, 200);
this.teext2.html = true;
this.teext2.wordWrap = true;
this.teext2.multiline = true;
this.teext2.embedFonts = true;
this.teext2.selectable = false;
this.teext2.htmlText = mixtext;
this.teext2.setTextFormat(infotextFormat);
Gruß
Rena
__________________
www.rena-hermann.de

The angels have the phone box

Geändert von rena (28-08-2008 um 16:54 Uhr)
rena ist offline   Mit Zitat antworten
Alt 28-08-2008, 17:00   #10 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 51
hallo rena,

super bauchgefühl! so klappt es einwandfrei!...:-)
vielen dank!

grüsse
stuntman
stuntman ist offline   Mit Zitat antworten
Alt 28-08-2008, 19:09   #11 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 51
und das nächste problem

guten abend zusammen,

weiter:
mein xml-aufruf sieht weiterhin so aus:

daten = new XML();
daten.ignoreWhite = true;
daten.load("alle_daten.xml");
daten.onLoad = function (success) {
if (success) {
biotext = daten.firstChild.childNodes[0].firstChild.nodeValue;
infotext = daten.firstChild.childNodes[1].firstChild.nodeValue;
mixtext = daten.firstChild.childNodes[2].firstChild.nodeValue;
videotext = daten.firstChild.childNodes[3].firstChild.nodeValue;
}
gotoAndStop(2);
}

wenn ich das ganze nun online teste und der mc in dem sich das ganze abspielt geladen wird (per attachMovie in einen mit createMovieClip erzeugten container) bekomme ich anfänglich in allen feldern "undefind"...wenn ich den mc dann noch zwei drei mal aufrufe kommen irgendwann die inhalte...

ich kann mir das eigentlich nur mit lade bzw. verarbeitungszeiten für das xml-dokument erklären(?), obwohl ich eigentlich davon ausgegangen bin das die if-funktion dafür sorgt das erst dann weitergegangen wird zu bild 2 wo ich die textfelder erzeuge, wenn alle daten da sind...
liege ich da falsch?
wie könnte ich sicher das die inhalte beim ersten aufruf direkt angezeigt werden?

vielen dank für hilfe / hinweise
grüsse
stuntman
stuntman ist offline   Mit Zitat antworten
Alt 28-08-2008, 20:58   #12 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 51
so gehts.

falls es jemand anderem hilft. ich hab anscheinend ne lösung gefunden.
ich hab das ganze textfeld erstellen jetzt ins selbe frame in eine funktion "daten_anzeigen" gepackt die bei "success" aufgerufen wird und nun scheint es reibungslos zu funktionieren. toi toi toi.
sieht dann also so aus:

if (success) {
biotext_chopjohn = daten.firstChild.childNodes[0].firstChild.nodeValue;
infotext_chopjohn = daten.firstChild.childNodes[1].firstChild.nodeValue;
mixtext_chopjohn = daten.firstChild.childNodes[2].firstChild.nodeValue;
videotext_chopjohn = daten.firstChild.childNodes[3].firstChild.nodeValue;
discotext_chopjohn = daten.firstChild.childNodes[4].firstChild.nodeValue;
daten_anzeigen();
}
}

grüsse
stuntman
stuntman 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 09:37 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele