Avatar billede larsbaun Nybegynder
15. oktober 2003 - 08:36 Der er 20 kommentarer og
1 løsning

optimering af xml kode

Kan denne kode gøres mere automatisk eller ER man nød til at skrive det på denne måde ?

function getNodeByName(node, tagname){
    length = node.childNodes.length;
    for (var i=0;i<length;i++){
      if (node.childNodes[i].nodeType == 1 && node.childNodes[i].nodeName == tagname){
        return node.childNodes[i];
      }
    }
    return null;
}

function getNodeByNameAndAttribute(node, tagname, attr, attrval){
    length = node.childNodes.length;
    for (var i=0;i<length;i++){
      if (node.childNodes[i].nodeType == 1 &&
          node.childNodes[i].nodeName == tagname &&
          node.childNodes[i].attributes[attr]==attrval){
        return node.childNodes[i];
      }
    }
    return null;
}

function init(xml) {
    tutorial0    = getNodeByNameAndAttribute(xml, 'tutorial', 'id', '0');
    headline    = getNodeByName(tutorial0, 'headline').firstChild.nodeValue;
    menutext1    = getNodeByName(tutorial0, 'menutext1').firstChild.nodeValue;
    menutext2     = getNodeByName(tutorial0, 'menutext2').firstChild.nodeValue;
    subh        = getNodeByName(tutorial0, 'subh');
    stepnumber    = getNodeByName(tutorial0, 'stepnumber');
    position    = getNodeByName(tutorial0, 'position');
    coordinatex    = getNodeByName(tutorial0, 'coordinatex');
    coordinatey    = getNodeByName(tutorial0, 'coordinatey');
    stepmax     = getNodeByName(tutorial0, 'stepmax').firstChild.nodeValue;
    steptext    = getNodeByName(tutorial0, 'steptext');
    step0         = getNodeByName(steptext, 'step0').firstChild.nodeValue;
    step1         = getNodeByName(steptext, 'step1').firstChild.nodeValue;
    step2         = getNodeByName(steptext, 'step2').firstChild.nodeValue;
    step3         = getNodeByName(steptext, 'step3').firstChild.nodeValue;
    step4         = getNodeByName(steptext, 'step4').firstChild.nodeValue;
    step5         = getNodeByName(steptext, 'step5').firstChild.nodeValue;
    number1     = getNodeByName(stepnumber, 'number1').firstChild.nodeValue;
    number2     = getNodeByName(stepnumber, 'number2').firstChild.nodeValue;
    number3     = getNodeByName(stepnumber, 'number3').firstChild.nodeValue;
    number4        = getNodeByName(stepnumber, 'number4').firstChild.nodeValue;
    number5     = getNodeByName(stepnumber, 'number5').firstChild.nodeValue;
    pos1        = getNodeByName(position, 'pos1').firstChild.nodeValue;
    pos2        = getNodeByName(position, 'pos2').firstChild.nodeValue;
    pos3        = getNodeByName(position, 'pos3').firstChild.nodeValue;
    pos4        = getNodeByName(position, 'pos4').firstChild.nodeValue;
    pos5        = getNodeByName(position, 'pos5').firstChild.nodeValue;
    corx1        = getNodeByName(coordinatex, 'corx1').firstChild.nodeValue;
    corx2        = getNodeByName(coordinatex, 'corx2').firstChild.nodeValue;
    corx3        = getNodeByName(coordinatex, 'corx3').firstChild.nodeValue;
    corx4        = getNodeByName(coordinatex, 'corx4').firstChild.nodeValue;
    corx5        = getNodeByName(coordinatex, 'corx5').firstChild.nodeValue;
    cory0        = getNodeByName(coordinatey, 'cory0').firstChild.nodeValue;
    cory1        = getNodeByName(coordinatey, 'cory1').firstChild.nodeValue;
    cory2        = getNodeByName(coordinatey, 'cory2').firstChild.nodeValue;
    cory3        = getNodeByName(coordinatey, 'cory3').firstChild.nodeValue;
    cory4        = getNodeByName(coordinatey, 'cory4').firstChild.nodeValue;
    cory5        = getNodeByName(coordinatey, 'cory5').firstChild.nodeValue;
    sub0        = getNodeByName(subh, 'sub0').firstChild.nodeValue;
    sub1        = getNodeByName(subh, 'sub1').firstChild.nodeValue;
    sub2        = getNodeByName(subh, 'sub2').firstChild.nodeValue;
    sub3        = getNodeByName(subh, 'sub3').firstChild.nodeValue;
    sub4        = getNodeByName(subh, 'sub4').firstChild.nodeValue;
    sub5        = getNodeByName(subh, 'sub5').firstChild.nodeValue;

}
Avatar billede barklund Nybegynder
15. oktober 2003 - 09:58 #1
Vis os din xml (evt. med et link) samt hvilke værdier du skal have ud og i hvilket format. Det kan i allerhøjeste grad gøres nemmere :)
Avatar billede larsbaun Nybegynder
15. oktober 2003 - 10:11 #2
Jeg skal bruge alle data`er oven for og mine filer kan ses her:

http://www.widex.com/lba-test/wss_1.xml
http://www.widex.com/lba-test/wss_14.swf
Avatar billede larsbaun Nybegynder
15. oktober 2003 - 10:16 #3
I dette eks. er der 5 step i id0 og 1 men det kune lige så godt være 10 og 20 steps !
Avatar billede larsbaun Nybegynder
16. oktober 2003 - 08:19 #4
Barklund - du skrev at det i allerhøjeste grad kunne gøres nemmere - har du et kort bud på hvordan eller kan du fortælle hvilken vej jeg skal søge ....

/lars
Avatar billede barklund Nybegynder
16. oktober 2003 - 09:18 #5
Du har lidt misforstået konceptet i XML - så jeg skriver lige XML'en om for dig og laver en hurtigt parser...
Avatar billede barklund Nybegynder
16. oktober 2003 - 09:20 #6
Eller forresten.. må jeg lave om på XML-strukturen? For den er slet ikke optimal...
Avatar billede larsbaun Nybegynder
16. oktober 2003 - 09:26 #7
Jeg kunne forstille mig at du cil lave dem om til noget i retning af:

  <tutorial id="1">
    <menuitems>
    <headline>1 Support System</headline>
    <menutext1>1 Help</menutext1>
    <menutext2>1 Tutorials</menutext2>
    </menuitems>
    <step1>
    <subheadline>Open lotus notes</subheadline>
    <steptext>Click on the lotus notes icon on your desktop</steptext>
    <stepnumber>Step 1 of 4</stepnumber>
    </step1>
    <step2>
    <subheadline>Open mail folder</subheadline>
    <steptext>Click on the mail icon</steptext>
    <stepnumber>Step 2 of 4</stepnumber>
    </step2>

og det vil være helt o.k - mit problem har hidtil været at få dataerne ind i flash - og på de rigtige pladser - vil det hjælpe dig at få fla filen ?
Avatar billede barklund Nybegynder
16. oktober 2003 - 09:29 #8
Yup, det er tættere på, men du skal ikke kalde dine steps for step1 osv, men derimod step <step_id="1"> for de beskriver jo samme type data og bør derfor have samme node navn.
Avatar billede larsbaun Nybegynder
16. oktober 2003 - 09:36 #9
Jeg har lagt fla filen samme sted som det andet , giv lige besked når du har hentet det så jeg kan slette det igen. 
filen hedder wss_14.fla
Avatar billede larsbaun Nybegynder
16. oktober 2003 - 09:44 #10
Do you got it !
Avatar billede barklund Nybegynder
16. oktober 2003 - 09:47 #11
Jeg har lavet min egen lille fil :)
Avatar billede barklund Nybegynder
16. oktober 2003 - 10:05 #12
Her ligger filerne:

http://actionscript.dk/eksperten/larsbaun/

Sådan her kan du bruge filen - Efter load vil du kunne:

tutorial = tutParser_xml.getTut(1);

og så har du:

tutorial.id = "1"
tutorial.headline = "Support System"
tutorial.menutexts = ["", "Menu", "Tutorials"]
tutorial.steps[1].id = "1"
tutorial.steps[1].sub = "Welcome"
tutorial.steps[1].step = "Turn on the computer @NewLine og så prøver vi med et linie skift!"
tutorial.steps[1].number = "Step 1 of 5"
tutorial.steps[1].position = "upperleft"
tutorial.steps[1].corx = "0"
tutorial.steps[1].cory="0"

osv...

/Barklund
Avatar billede larsbaun Nybegynder
16. oktober 2003 - 10:24 #13
Jeg kan ikke få dataerne ind i flash eller ud på scenen så jeg kan se dem ....

Hvordan gør du hvis du på skærmen vil lave et movieclip med
tutorial.steps[1].sub = "Welcome"
Avatar billede barklund Nybegynder
16. oktober 2003 - 10:29 #14
Tilføjer nederst i onLoad:

myCustomFunction();

Og til sidst definerer du denne:

function myCustomFunction() {
    tutorial = tutParser_xml.getTut(1);
    myTextField.text = tutorial.steps[1].sub;
}
Avatar billede larsbaun Nybegynder
16. oktober 2003 - 10:50 #15
Jeg har prøvet at arbejde vidre med dit eks. men kan ikke få det til at virke !
Det virker som om at xml ikke bliver hentet ?

Kan du lavet et eks der viser at en tekst bliver hentet med den nye xml ?
Avatar billede larsbaun Nybegynder
16. oktober 2003 - 11:23 #16
Barklund - jeg vil meget gerne give dig point - men kan du vise hvordan du gør eller skrære det lidt mere ud i pap ?

En fla fil der viser det vil være være kanon ?
Avatar billede barklund Nybegynder
16. oktober 2003 - 11:37 #17
lidt senere... er lige lidt stresset... en gang over frokost, okay? ;)
Avatar billede barklund Nybegynder
20. oktober 2003 - 19:39 #18
Nu har jeg spist frokost (et par gange) og har nu tilføjet nedenstående eksempel funktion til filen (samme url som før):

function testFunction() {
    var tut0 = tutParser_xml.getTut(0)
    var tut1 = tutParser_xml.getTut(1)
    my_txt.text  = tut0.menutexts[1];
    my_txt.text += "\n  "+tut0.steps[1].sub;   
    my_txt.text += "\n  "+tut0.steps[2].sub;   
    my_txt.text += "\n  "+tut0.steps[3].sub;   
    my_txt.text += "\n  "+tut0.steps[4].sub;   
    my_txt.text += "\n  "+tut0.steps[5].sub;
    my_txt.text += "\n\n"+tut1.menutexts[1];
    my_txt.text += "\n  "+tut1.steps[1].sub;   
    my_txt.text += "\n  "+tut1.steps[2].sub;   
    my_txt.text += "\n  "+tut1.steps[3].sub;   
    my_txt.text += "\n  "+tut1.steps[4].sub;   
    my_txt.text += "\n  "+tut1.steps[5].sub;   
}

Og som du kan se, så skriver den fint det hele ud i tekstfeltet ;)

/Barklund
Avatar billede larsbaun Nybegynder
22. oktober 2003 - 08:09 #19
Tak for din hjælp , jeg har tjekket at det virker og nu bliver teksten parset flot ind i flash så jeg arbejder vidre på sagen .

See U
Avatar billede barklund Nybegynder
22. oktober 2003 - 14:43 #20
OK :)
Avatar billede barklund Nybegynder
22. oktober 2003 - 14:43 #21
Tark for points :)
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