jag försöker hämta data från en xml-fil. Detta går inget bra. Min AS-kod ser ut så här. Jag kan kanske förtydliga mig lite. Det jag vill göra är att fylla en tree component med data från en xml-fil. Jag vill också att det ska fungera så här. Vad enkelt det var...:)Problem med for-loop
<code>
System.useCodepage = true;
var xmlTreeData:XML = new XML();
xmlTreeData.ignoreWhite = true;
xmlTreeData.onLoad = function(bSuccess:Boolean):Void {
if(bSuccess) {
var xmlnRoot:XMLNode = xmlTreeData.firstChild;
var aNodes:Array = xmlnRoot.childNodes;
var bNodes:Array = xmlnRoot.firstChild.childNodes;
trace(xmlnRoot.attributes.name);
for(var i:Number = 0; i < aNodes.length; i++) {
trace(aNodes[i].attributes.name);
for (var j:Number = 0; j < bNodes.length; j++) {
trace(bNodes[j].attributes.name);
}
}
}
else {
trace("Filen gick inte att ladda.");
}
};
xmlTreeData.load("links.xml");
</code>
Min xml-fil ser ut så här.
<code>
<?xml version="1.0" encoding="utf-8" ?>
<links name="Länkar">
<subject name="Skolan">
<link nr="1" name="HIK" url="http://www.hik.se" />
<link nr="2" name="Webbprogrammering" url="https://www.te.hik.se/tekinet/kurser/dtt/wp/" />
<link nr="3" name="Actionscript" url="http://www.te.hik.se/tekinet/kurser/dtt/wp_action/index.php?sida=start" />
</subject>
<subject name="Nyheter">
<link nr="1" name="Aftonbladet" url="http://www.aftonbladet.se" />
<link nr="2" name="Expressen" url="http://www.expressen.se" />
</subject>
<subject name="Privat">
<link nr="1" name="Nätuniversitetet" url="http://www.netuniversity.se" />
</subject>
</links>
</code>
Jag vill att det ska se ut så här när jag ahr hämtat all data.
Länkar
skolan
HIK
Webbprogrammering
Actionscript
Nyheter
Aftonbladet
Expressen
Privat
Nätuniversitet
Nu ser det ut så här:
Länkar
Skolan
HIK
Webbprogrammering
Actionscript
Nyheter
HIK
Webbprogrammering
Actionscript
Privat
HIK
Webbprogrammering
Actionscript
Som ni ser hämtas all data från linktaggen från den första subjecttaggen. Kan nån vänlig själ hjälpa mig att få detta rätt?Sv: Problem med for-loop
När man först öppnar sidan så ska det finnas en mapp uppe länkar, det fungerar. När man klickar på länkar så ska skolan, nyheter och privat komma upp även de som mappar. Klickar man sen på dom så ska man få fram innehållet i dom. Jag skickar med min nya AS-kod. Xml-filen ser ut som den gjorde innan. En länk till min fil så syns det lite bättre vad jag menar. http://212.181.148.74/as/lab5b_mh22gw.swf
<code>
System.useCodepage = true;
var xmlTreeData:XML = new XML();
xmlTreeData.ignoreWhite = true;
xmlTreeData.onLoad = function(bSuccess:Boolean):Void {
if(bSuccess) {
var xmlnRoot:XMLNode = xmlTreeData.firstChild;
var aNodes:Array = xmlnRoot.childNodes;
var bNodes:Array = xmlnRoot.firstChild.childNodes;
trace(xmlnRoot.attributes.name);
var oDocsNode:Object = xmlTree.addTreeNodeAt(0, xmlnRoot.attributes.name, xmlnRoot.attributes.data);
for(var i:Number = 0; i < aNodes.length; i++) {
oDocsNode.addTreeNode(aNodes[i].attributes.name, aNodes[i].attributes.data);
trace(aNodes[i].attributes.name);
for (var j:Number = 0; j < bNodes.length; j++) {
trace(bNodes[j].attributes.name);
oDocsNode.addTreeNodeAt(j, aNodes[j].attributes.name, aNodes[j].attributes.data);
}
}
}
else {
trace("Filen gick inte att ladda.");
}
};
xmlTreeData.load("links.xml");
</code>Sv:Problem med for-loop
Jag gjorde om min kod till detta:
<code>
var xmlTreeData:XML = new XML();
xmlTreeData.onLoad = function(bSucces:Boolean):Void {
if(bSucces)
{
xmlTree.dataProvider = this.firstChild;
}
else
{
trace("Det gick inte att ladda XML-filen.");
}
}
xmlTreeData.ignoreWhite = true;
xmlTreeData.load("links.xml");
</code>
Och det fungerar utmärkt! Jag ändrade även attributet name i xml-filen till label. Nu ska jag bara få länkarna att fungera.