Jeg henter først min parent ind: altså projekt, - og jeg har en attributes som vi kan kalde projektText
Jeg løber xmlen igennem med
XMLNode.prototype.sendNodes = function(searchName, callback) { // Send all nodes matching searchName // to the client's callback function. // Recurse to visit all nested nodes for (var i = 0; i<this.childNodes.length; i++) { var currentNode = this.childNodes[i]; // // if (currentNode.nodeName == searchName) { callback(currentNode); } // if (currentNode.childNodes.length>0) { currentNode.sendNodes(searchName, callback); } } };
efter kald med
myDoc.sendNodes("Project", handleProject);
Når den finde en post, altså et project tag så:
function handleProject(node) { project.push(node.attributes["ProjectText"]); myTreeDP.addTreeNode(String(project), 0); }
og det samme med de andre poster, - det fede ville være hvis man kunne lave den rigtige struktur med det samme.
Min næste post bliver behandlet således når den er fundet:
function handlePhase(node) { var myTreeNode = myTreeDP.firstChild; fase = (node.attributes["FaseText"]); myTreeNode.addTreeNode(String(fase), 1); var nodes = myTreeNode.getTreeNodeAt(m); myTree.setIsBranch(nodes, true); m++; }
Og så er problemet bare at jeg for de næste siblings ikke kan finde ud af at få dem proppet ind i de rigtige firstChilds...
hentFaser = new XML(); hentFaser.onLoad = function(s) { if (!s) return false; faser = new Array(); var top = this.firstChild.childNodes; var i, n, j, a; for (i = 0; i < top.length; i++) { n = top[i]; a = faser[n.attributes.faseId] = new Array(); for (j = 0; j < n.childNodes.length; j++) { a.push(n.childNodes[j].attributes.aktivitetLabel); } trace(faser.join("\n")); } hentFaser.ignoreWhite = true; hentFaser.load("some.xml");
Hmm... Kan du vise mig et eksempel på den korrekte XML? (altså ikke bare noget magen til, men det rigtige). Du kan maile det, hvis det er hemmeligt :)
Prøv at bruge denne:
if (!s) { return false; } faser = new Array(); var top = this.firstChild.firstChild.childNodes; trace("top length = " +top.length); var i, n, j, a; for (i=0; i<top.length; i++) { n = top[i]; trace("top["+i+"] = "+n.nodeName); a = faser[n.attributes.faseID]=new Array(); trace("n.childNodes.length = " +n.childNodes.length); for (j=0; j<n.childNodes.length; j++) { trace("aktiv = "+n.childNodes[j].attributes.myActivity); a.push(n.childNodes[j].attributes.myActivity); } // trace(faser.join("\n"));
Det ville jo være dejligt hvis jeg kunne få det på denne måde: faseID1 = "1" faseID1_myActivity = "blablabla" faseID1_ActivityText1 = "tekst1" faseID1_ActivityText2 = "tekst2" faseID1_ActivityText3 = "tekst3"
altså en eller anden form for multidimensionel array??
Jeg forsøger jo at lave en menu, - og mine faser er top menu items, - min myActivity er subItem og min ActivityText er så subsubItem.
Nå, men mange tak fordi du gider at hjæpe mig ;-)
vh
KalleBalle
Synes godt om
Ny brugerNybegynder
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.