Avatar billede sesam Nybegynder
21. november 2002 - 13:00 Der er 10 kommentarer og
1 løsning

Hente tekst ind i flash

Hej
Jeg har et problem med at hente en tekst ind i flash fra XML:
Problemt er som følger. Den XML fil jeg henter ind ser sådan her ud:
--------------------------------------------------------
<?xml version='1.0' encoding='iso-8859-1'?>
<text>
<name><a href="java script:openwin('opskrifter.php?label=opskrifter')">Hurry curry</a><br /><a href="java script:openwin('opskrifter.php?label=opskrifter')">Opskrift2</a><br /><a href="java script:openwin('opskrifter.php?label=test')">test</a><br /></name>
</text>
-----------------------------------------------------
Jeg har tjekket om det er gyldig XML og det er det:

Jeg kan godt hente teksten ind hvis det kun er et tekst link:
Eksmepel:
------------------------------------------------------
<?xml version='1.0' encoding='iso-8859-1'?>
<text>
<name><a href="java script:openwin('opskrifter.php?label=opskrifter')">Hurry curry</a><br /></name>
</text>
-----------------------------------------------------
Problemet opstår hvis der er flere links i teksten så skriver den kun det første link ud i flash filmen.

Er der nogen der kan sige mig hvorfor?
Avatar billede barklund Nybegynder
21. november 2002 - 13:14 #1
Fordi den parser det som et xml-tag... En mulighed er at url-encode det og så i flash lave en unescape() inden du sætter det ind i flash'en...

Du vil vel have hele teksten mellem <name> og </name> sat u-parset ind i et tekstfelt, så det virker som et sådant, ikke?
Avatar billede _k Nybegynder
21. november 2002 - 13:16 #2
Uden at skulle påstå at være den store guru ud i Flash og XML, tror du så ikke at problemet kunne løses ved at give "Opskrift2" og "test" deres egen <name>-tag?
Det kommer jo an på hvordan du parser på dokumentet, men under alle omstændigheder ville det være pænere XML at splitte opskrifterne ud på den måde....

Et rigtigt godt link omkring parsing af XML i MX:
http://actionscript-toolbox.com/xmlobject.php
Avatar billede sesam Nybegynder
21. november 2002 - 13:19 #3
Barklund: Hvordan gør jeg det?

_k: Det har jeg også gjort til at starte med men der er problemer ved det...
Avatar billede barklund Nybegynder
21. november 2002 - 13:20 #4
Hvordan er dit script nu? Jeg tror godt, at det kan lade sig gøre alligevel, når jeg tænker lidt over det...
Avatar billede sesam Nybegynder
21. november 2002 - 13:22 #5
onClipEvent (load) {
    function myLoad(success) {
        if (success) {
            var antalbytes = this.getBytesLoaded();
            if (antalbytes>0) {
                _root.txtantalbytes = antalbytes;
               
                _root.txtthis = this;
               
                var text = this.firstChild;
                _root.txtcontent = text;
                var attrarr1 = text.attributes;   
               
                if (text.hasChildNodes) {
                   
                    var display = text.childNodes;
                   
                        _root["txt1"] = display[0].childNodes[0];
                }
            } else {
            }
        } else {
        }
    }
    thisXML = new XML();
    thisXML.ignoreWhite = true;
    thisXML.onLoad = myLoad;   
    thisXML.load("xml_recepies.php");
}
Avatar billede barklund Nybegynder
21. november 2002 - 13:28 #6
Du skriver jo også, at _root["txt1"] kun skal være childNodes[0], men det ksla jo være alle dine childNodes:

onClipEvent (load) {
    function myLoad(success) {
        if (success) {
            var antalbytes = this.getBytesLoaded();
            if (antalbytes>0) {
                _root.txtantalbytes = antalbytes;
             
                _root.txtthis = this;
             
                var text = this.firstChild;
                _root.txtcontent = text;
                var attrarr1 = text.attributes; 
             
                if (text.hasChildNodes) {
                 
                    var display = text.childNodes;
                 
                    _root["txt1"] = display[0].childNodes.join("");
                }
            } else {
            }
        } else {
        }
    }
    thisXML = new XML();
    thisXML.ignoreWhite = true;
    thisXML.onLoad = myLoad; 
    thisXML.load("xml_recepies.php");
}


Så skulle den være der.... XML er herligt - bruger det selv mere og mere (se fx. http://sundhedsduellen.dk - hele interaktionen mellem flash og backend er XML)

/Barklund
Avatar billede sesam Nybegynder
21. november 2002 - 13:39 #7
Barklund super cool, jeg kendte ikke childNodes.join(""); tak for det...
Kender du nogen sider der er gode når man vil parse XML fra php eller har du noget god kode liggende?
Avatar billede sesam Nybegynder
21. november 2002 - 14:13 #8
Thank you;0)
Avatar billede sesam Nybegynder
21. november 2002 - 14:14 #9
Barklund du har lige nogle point tilgode her:
http://www.eksperten.dk/spm/285131
Avatar billede barklund Nybegynder
21. november 2002 - 14:15 #10
childNodes er jo "bare" et helt almindeligt array, så den almindelige join(delimiter) metode virker jo stadig... Default delimiter er jo ",", så det skal eksplicit siges, at der ikke skal lægges noget imellem dem...

Det fede ved XML er, at der er så få regler... Det hele kører i childs, parents og siblings og så lidt attributer en gang imellem...

Jeg kan se, at du bruger MX (ignoreWhite()), uden ignoreWhite() var det nemlig lidt mere besværligt... Jeg plejer at opbygge mine XML-strenge som tekststrenge og så sende dem... PHP er jo også super god til at parse XML'en....

Men FriendsOfEd (tror jeg det var) har udgivet "Flash 5 & XML Studiolab" - hvilket jeg havde meget nytte af...

/Barklund
Avatar billede barklund Nybegynder
21. november 2002 - 14:16 #11
Og tark for point (svar smidt i andet spm ligeledes)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester