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; }
Annonceindlæg fra Cognizant
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 :)
15. oktober 2003 - 10:11
#2
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 !
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
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...
16. oktober 2003 - 09:20
#6
Eller forresten.. må jeg lave om på XML-strukturen? For den er slet ikke optimal...
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 ?
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.
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
16. oktober 2003 - 09:44
#10
Do you got it !
16. oktober 2003 - 09:47
#11
Jeg har lavet min egen lille fil :)
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
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"
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; }
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 ?
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 ?
16. oktober 2003 - 11:37
#17
lidt senere... er lige lidt stresset... en gang over frokost, okay? ;)
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
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
22. oktober 2003 - 14:43
#20
OK :)
22. oktober 2003 - 14:43
#21
Tark for points :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.