Avatar billede knisse Nybegynder
14. marts 2002 - 18:04 Der er 56 kommentarer og
1 løsning

OK jeg giver op... Flash og XML

jeg har lavet en xml fil, den ser ud som det her:
<?xml version="1.0"?>
<pagefolder>
    <page>
        <name>name1</name>
        <location>location1</location>
        <name>name1</name>
        <location>location1</location>
    </page>
    <page>
        <name>name2</name>
        <location>location2</location>
        <name>name1</name>
        <location>location1</location>
        <name>name1</name>
        <location>location1</location>
    </page>
    <page>
        <name>name2</name>
        <location>location2</location>
    </page>
</pagefolder>

Ideen er, at den skal loade en menu i Flash 5 og så skal jeg kunne navigere efter name hvor location er urlén til siden.

Men jeg kan ikke få det til at virke i Flash, jeg har kigget på flashkit og andre steder men jeg kan ikke få det til at virke, ikke en gang en lille smule.

Jeg skal bruge et actionscript der kan loade XML´en og anvende name og location som navigering i en menu.

Om der skal laves om i xml´en eller ej, er lige meget. Jeg kunne forestille mig at man kunne sætte location ind som attribute i name noden eller noget i den retning, det spiller ingen rolle, jeg skal bare have en løsning.

Løsningen skal dog kunne håndtere flere name/location nodes i samme page node.
Avatar billede hoejrup Nybegynder
15. marts 2002 - 11:09 #1
Har du husket at konvertere dit xml dokument fra ASCII (American Standard Code for Information Interchange) kode til Unicode?

/per
Avatar billede hoejrup Nybegynder
15. marts 2002 - 11:10 #2
Har du prøvet at kigge i spørgsmålet: http://www.eksperten.dk/spm/184891

/per
Avatar billede knisse Nybegynder
15. marts 2002 - 11:12 #3
heojrup... jeg er ikke helt med, forklar.
Avatar billede hoejrup Nybegynder
15. marts 2002 - 11:23 #4
Alle dokumenter på PC'ere, Mac'er mv. er skrevet i ASCII for at du kan læse dem. Hvis
du ikke konvertere det til unicode, så skal du anvende en encoding-attribut i dit dokument:

<?xml version="1.0" encoding="ISO-8895-1"?>

/per
Avatar billede hoejrup Nybegynder
15. marts 2002 - 11:25 #5
Men den enkelste og smarteste løsning er at konvertere dine xml dokumenter til unikode.
Eller fremstille xml dokumenterne i en editor, der kan gemme i Unicode formatet.

/per
Avatar billede knisse Nybegynder
15. marts 2002 - 11:26 #6
ok, den har jeg sat ind, så det er i orden.
Jeg har forsøgt mig med dette script, som er hentet fra flashkit:
//Create new xml object
xmldoc = new XML();
//when the data has loaded, convert the shit
xmldoc.onLoad = convertXML;
//Write to screen
xml_container = "Loading data";
//And load up the XML
xmldoc.load("navigation_XML.xml");


//And now to the hard stuff
function convertXML(){
    if(this.loaded){
        xml_container = "Menu Loaded!";
    }//End of if statement
    mainTag = new XML;
    elementTag = new XML;
    articleList = new Array;
    elementList = new Array;
    //Tjeck maintag
    mainTag = this.firstChild.nextSibling;
    if(mainTag.nodeName.toLowerCase() == "filelist"){
        articleList = mainTag.childNodes;
        xml_container = "Processing";
        for(i=0; i<=articleList.length;i++){
            document_url = "";
            headline_text = "";
            if(articleList[i].nodeName.toLowerCase() == "file"){
                elementList = articleList[i].childNodes;
                for(j=0;j<=elemetList.length;j++){
                    elementTag = elementList[j];
                    elementType = elementTag.nodeName.toLowerCase();
                        if(elementType == "name"){
                            headline_text = elementTag.firstChild.nodeValue;
                        } else {
                            if(elementType == "src"){
                                document_url = elementTag.firstChild.nodeValue;
                            }//End of if statement
                        }//End of if else statement
                }//End of for loop
//Write list to screen
xml_container += "<a href="+document_url+" target=top>"+headline_text+"</a><br>";
            }//End of if statement
        }//End of for loop
    } else {
        xml_container = "Error processing...";
    }
}

Der er lavet nogle tilpasninger i XML´en for at få det til at passe.

Men der sker ikke en skid
Avatar billede hoejrup Nybegynder
15. marts 2002 - 11:26 #7
enkleste = enkelste
Avatar billede knisse Nybegynder
15. marts 2002 - 11:29 #8
jeg har placeret xml filen sammen med flash filen, men der sker ikke en skid, ikke det der ligner
Avatar billede hoejrup Nybegynder
15. marts 2002 - 11:41 #9
Har du prøvet at læse data ind via loadVariablesNum(); , så du kan undersøge om der er hul igennem til flash?

/per
Avatar billede knisse Nybegynder
15. marts 2002 - 11:43 #10
forklar, kan du prøve at give et eksempel?
Avatar billede hoejrup Nybegynder
15. marts 2002 - 11:47 #11
Et link til en unicode editor: http://www.tucows.com/preview/209299.html

/per
Avatar billede knisse Nybegynder
15. marts 2002 - 11:52 #12
i det script jeg har smidt ind her over, sker der det, at xml´en bliver loadet, men i stedet for at behandle if(mainTag.nodeName.toLowerCase() == "filelist), springer den videre til xml_container = "Error processing...";, altså fortæller den mig, at min mainTag ikke er lig med filelist, men det er den, i XML´en er filelist og file med
Avatar billede hoejrup Nybegynder
15. marts 2002 - 12:46 #13
Den skal tilpasses dit XML dokument.

<?xml version="1.0"?>
<pagefolder>
    <page>
        <name>name1</name>
        <location>location1</location>
        <name>name1</name>
        <location>location1</location>
    </page>
    <page>
        <name>name2</name>
        <location>location2</location>
        <name>name1</name>
        <location>location1</location>
        <name>name1</name>
        <location>location1</location>
    </page>
    <page>
        <name>name2</name>
        <location>location2</location>
    </page>
</pagefolder>


Derfor skal du sætte den til: mainTag.nodeName.toLowerCase() == "pagefolder"

/per
Avatar billede hoejrup Nybegynder
15. marts 2002 - 12:48 #14
Deklarationen af dokumentet skal stadigvæk være <?xml version="1.0" encoding="ISO-8895-1"?>

/per
Avatar billede knisse Nybegynder
15. marts 2002 - 12:56 #15
Nu har jeg rettet mit script til
//Create new xml object
xmldoc = new XML();
//when the data has loaded, convert the shit
xmldoc.onLoad = convertXML;
//Write to screen
xml_container = "Loading data";
//And load up the XML
xmldoc.load("navigation_XML.xml");


//And now to the hard stuff
function convertXML(){
    if(this.loaded){
        xml_container = "Menu Loaded!";
    }//End of if statement
    mainTag = new XML;
    elementTag = new XML;
    articleList = new Array;
    elementList = new Array;
    //Tjeck maintag
    mainTag = this.firstChild.nextSibling;
    if(mainTag.nodeName.toLowerCase() == "pagefolder"){
        articleList = mainTag.childNodes;
        xml_container = "Processing";
        for(i=0; i<=articleList.length;i++){
            document_url = "";
            headline_text = "";
            if(articleList[i].nodeName.toLowerCase() == "page"){
                elementList = articleList[i].childNodes;
                for(j=0;j<=elemetList.length;j++){
                    elementTag = elementList[j];
                    elementType = elementTag.nodeName.toLowerCase();
                        if(elementType == "name"){
                            headline_text = elementTag.firstChild.nodeValue;
                        } else {
                            if(elementType == "location"){
                                document_url = elementTag.firstChild.nodeValue;
                            }//End of if statement
                        }//End of if else statement
                }//End of for loop
//Write list to screen
xml_container += "<a href="+document_url+" target=top>"+headline_text+"</a><br>";
            }//End of if statement
        }//End of for loop
    } else {
        xml_container = "Error processing...";
    }
}

og ændret min xml fil

<?xml version="1.0" encoding="ISO-8895-1"?>
<pagefolder>
    <page>
        <name>name1</name>
        <location>location1</location>
    </page>
    <page>
        <name>name2</name>
        <location>location2</location>
    </page>
    <page>
        <name>name3</name>
        <location>location2</location>
    </page>
</pagefolder>

men stadig ikke andet resultat end at jeg får Error processing... vist i flash filen.

Hvis I vil se hele filen kan I hente den her:http://www.osdp.dk/Projects/xml_menu.zip
Avatar billede hoejrup Nybegynder
15. marts 2002 - 13:40 #16
Du har en hel masse kontrol/blanke karaktere i starten af dit xml dokument. Dem har jeg fjernet, og derefter står der Processing
Avatar billede knisse Nybegynder
15. marts 2002 - 13:43 #17
jeg er ikke helt med hvor har du fjernet blanks?
Avatar billede hoejrup Nybegynder
15. marts 2002 - 13:54 #18
Da jeg downloaded dit dokument, så var der en masse blanke linier i toppen. Jeg har lige undersøgt dit dokument i en Hex editor, og fik følgende hex koder foran <?xml version="1.0" encoding="ISO-8895-1"?> ; 0D0D0D

/per
Avatar billede knisse Nybegynder
15. marts 2002 - 13:57 #19
hvad betyder det? blanks?
Avatar billede hoejrup Nybegynder
15. marts 2002 - 14:12 #20
Jeg mener usynlige eller blanke karakterer. Når der står 0D i hex, så rykker Mac data en linie ned i dokumentet, hvis du kigger på det i Tekst & lyd.

/per
Avatar billede knisse Nybegynder
15. marts 2002 - 14:15 #21
ok, så det vil sige at alle returns bliver til blanks i dette tilfælde, så skal hele xmlsiden skrives i en linie?
Avatar billede hoejrup Nybegynder
15. marts 2002 - 15:26 #22
Jeg får kun nedrykning foran <?xml version="1.0" encoding="ISO-8895-1"?> og den burde stå
i toppen af dokumentet.

/per
Avatar billede hoejrup Nybegynder
15. marts 2002 - 15:27 #23
Hvis du skal lave en XML parser der fjerner whitespaces, så kan du anvende XML nitro:
http://chattyfig.figleaf.com/~bhall/code/xmlnitro.as

/per
Avatar billede hoejrup Nybegynder
17. marts 2002 - 16:35 #24
Jeg fandt en fejl i din kode:

for(j=0;j<=elemetList.length;j++){

skal du erstatte med

for(j=0;j<=elementList.length;j++){

Jeg har anvendt trace til at undersøge dit actionscript, og det virker perfekt. Men
det kan stadigvæk ikke vise url adresser i vinduet.

Taget fra Flash 5 bruger manual:

Når du vælger HTML formaterings muligheden i Text Option panelet, så understøttes HTML
tags som du har tilført i Action panelet, når du eksportere din swf movie fil.

Dvs. din metode ikke kan anvendes.

/per
Avatar billede knisse Nybegynder
18. marts 2002 - 08:02 #25
Hej Per,
stavefejl... irriterende. Men du siger min kode ikke kan anvendes.. fedt. Men hvis jeg så ændrer Text Option fra dynamic til static, kunne det måske virke.
Avatar billede hoejrup Nybegynder
18. marts 2002 - 11:55 #26
Hvis du anvender Dynamic Text, og fjerner krydset i HTML selection boksen. Så kommer
der data ud i vinduet.

/per
Avatar billede knisse Nybegynder
18. marts 2002 - 12:04 #27
... nej.
her er mit script:
//Create new xml object
xmldoc = new XML();
//when the data has loaded, convert the shit
xmldoc.onLoad = convertXML;
//Write to screen
xml_container = "Loading data";
//And load up the XML
xmldoc.load("navigation_XML.xml");


//And now to the hard stuff
function convertXML(){
    if(this.loaded){
        xml_container = "Menu Loaded!";
    }//End of if statement
    mainTag = new XML;
    elementTag = new XML;
    articleList = new Array;
    elementList = new Array;
    //Tjeck maintag
    mainTag = this.firstChild.nextSibling;
    if(mainTag.nodeName.toLowerCase() == "pagefolder"){
        articleList = mainTag.childNodes;
        xml_container = "Processing";
        for(i=0; i<=articleList.length;i++){
            document_url = "";
            headline_text = "";
            if(articleList[i].nodeName.toLowerCase() == "page"){
                elementList = articleList[i].childNodes;
                for(j=0;j<=elementList.length;j++){
                    elementTag = elementList[j];
                    elementType = elementTag.nodeName.toLowerCase();
                        if(elementType == "name"){
                            headline_text = elementTag.firstChild.nodeValue;
                        } else {
                            if(elementType == "location"){
                                document_url = elementTag.firstChild.nodeValue;
                            }//End of if statement
                        }//End of if else statement
                }//End of for loop
//Write list to screen
xml_container += "Content " + headline_text;
            }//End of if statement
        }//End of for loop
    } else {
        xml_container = "Error processing...";
    }
}
Kan det have noget at gøre med det du tidligere nævnte med hensyn til XMl og blanks?

//Kris
Avatar billede hoejrup Nybegynder
18. marts 2002 - 12:37 #28
Jeg har fjernet de blanke i toppen af dit xml dokument. Derefter anvendt Dynamic Text, og fjerner krydset i HTML selection boksen.

Resultatet: http://www.kazoma.dk/eksperten/xml_based_menu.html

/per
Avatar billede knisse Nybegynder
18. marts 2002 - 12:39 #29
Hvad brugte du til at fjerne blanks med?
Avatar billede hoejrup Nybegynder
18. marts 2002 - 13:02 #30
En simpel tekst editor: Tekst & lyd til Mac

Du kan sikkert også bruge NotePad til PC.

/per
Avatar billede knisse Nybegynder
18. marts 2002 - 13:05 #31
?? nu kan det godt være det lyder dumt, men hvordan det?
Avatar billede hoejrup Nybegynder
18. marts 2002 - 13:12 #32
Bare rolig, det kan være en fejl i din editor.

Hvad anvender du til at editere dit dokument med?

/per
Avatar billede knisse Nybegynder
18. marts 2002 - 13:17 #33
Homesite, hvis det er XML siden vi snakker om.
Vedr. det med at fjerne anvendelsen af HTML i text options. Hvordan får jeg så mit XML indhold omsat til noget der kan klikkes på?
Avatar billede hoejrup Nybegynder
18. marts 2002 - 13:25 #34
Det er faktisk ret nemt, du skal bare lære xhtml og asp jscript eller php.

/per
Avatar billede knisse Nybegynder
18. marts 2002 - 13:27 #35
jeg arbejder allerede med asp og php, men hvad havde du i tankerne?
Avatar billede hoejrup Nybegynder
18. marts 2002 - 13:28 #36
Avatar billede knisse Nybegynder
18. marts 2002 - 13:33 #37
jo men til hvilken del af det.
Er det til at lave et korrekte XML doc med eller hvad
Avatar billede hoejrup Nybegynder
18. marts 2002 - 13:35 #38
Hvilket program har du anvendt til at lave dit xml dokument i?

/per
Avatar billede knisse Nybegynder
18. marts 2002 - 13:37 #39
HomeSite
Avatar billede hoejrup Nybegynder
18. marts 2002 - 13:48 #40
Prøv at editere dokumentet i NotePad.

/per
Avatar billede knisse Nybegynder
18. marts 2002 - 13:57 #41
det har jeg forsøgt, jeg skrev det i en linie, men det er stadig det samme resultat. kan du ikke sende mig den fil du oploadede?
Avatar billede hoejrup Nybegynder
18. marts 2002 - 14:54 #42
Jeg har sendt filen til kristian@osdp.dk

/per
Avatar billede knisse Nybegynder
18. marts 2002 - 14:54 #43
Jeg har fået det til at virke... men hvis du har en ide til hvordan jeg får hver name/location par til at udgøre en knap, må du sige til.
Avatar billede hoejrup Nybegynder
18. marts 2002 - 14:57 #44
Jeg vil skam gerne kigge på det.

Kan du ikke prøve at undersøge om Flash MX understøtter din metode?

Du kan hente en gratis 30 dages trial version på www.macromedia.com

/per
Avatar billede knisse Nybegynder
18. marts 2002 - 15:01 #45
Jeg ved at Flash MX kan lave det.. jeg var med til et intro seminar, og jo, den kan den slags, men jeg har set Flash 5 gøre det samme, så at opgradere pga det problem er måske lidt vildt.
Avatar billede hoejrup Nybegynder
24. marts 2002 - 16:08 #46
Hej knisse

Her er din løsning.

xml_container += "<a href=\"+document_url+\">"+headline_text+"</a><br>";
Avatar billede hoejrup Nybegynder
24. marts 2002 - 16:41 #47
Jeg har lige testet den med data, og nu skal den se sådan ud:

xml_container += "<br><a href='"+document_url+"'>"+headline_text+"</a>";

/per
Avatar billede hoejrup Nybegynder
26. marts 2002 - 09:14 #48
Kan du bruge min løsning?

/per
Avatar billede knisse Nybegynder
26. marts 2002 - 09:20 #49
ja tak for hjælpen
Avatar billede hoejrup Nybegynder
26. marts 2002 - 09:23 #50
Velbekomme.

/per
Avatar billede mvk Nybegynder
01. maj 2002 - 09:44 #51
er det muligt at få et link til det færdige resultat :)
Avatar billede knisse Nybegynder
01. maj 2002 - 09:48 #52
ja smid din mail ind, så sender jeg dig sovsen.
Avatar billede mvk Nybegynder
01. maj 2002 - 09:58 #53
super duper
fuzzy@email.dk
tak :o)
Avatar billede nopper Praktikant
14. maj 2003 - 10:06 #54
Jeg kunne også godt tænke mig at se det endelige resultalt.
niels-orla@mjols.dk
Avatar billede knisse Nybegynder
14. maj 2003 - 10:48 #55
Det eksisterer ikke længere, beklager
Avatar billede hoejrup Nybegynder
14. maj 2003 - 16:57 #56
nopper>Hvad tænker du på selve funktionaliteten med xml dokumentet og fla filen?

Jeg har dem stadigvæk liggende på backup, hvis du kan bruge dem.

/per
Avatar billede nopper Praktikant
14. maj 2003 - 17:27 #57
Ja, det gør jeg.Jeg er meget nybegynder indenfor dette felt, så det kunne måske hjælpe lidt.
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