PDA

Volledige versie bekijken : xml weergave probleem


skrudge
%Europe/Berlin %520 %2006, 13:29
Beste mensen,
ik ben op moment met een xml backend bezig voor een portfolio site.
de bedoeling is dat vanuit de xml file er een menu geladen wordt, die doorlinkt naar de content die in dezelfde node staat.
Het probleem is dat er vanuit de ene node wel gewoon text ingeladen wordt, en vanuit een ander oo kwel, maar de xml tags blijven er omheen staan. Ik heb ook al geprobeerd om alleen de nodeValue op te roepen, maar dan wordt er helemaal niets weergegeven.
Ook lukt het totaal niet om een image op te roepen op deze manier.

de AS is als volgt:
this.positions = new Array();
this.titles = new Array();
this.text = new Array();
this.page_content = new Array();
this.myXML = new XML();
this.myXML.ignoreWhite = true;

this.onEnterFrame = function() {
starty = GetProperty(_root.pages,_y);
verticalno = pagesy-starty;
setProperty (_root.pages, _y, starty+(verticalno/6));
}

this.pageMove = function(location) {
trace("location: " + location);
_global.pagesy = location;
}

this.menuMove = function(x) {
var mousePos = x;
if (mousePos<=20) {
// Tell menu to show itself
_root.menu.showMenu();
} else if (mousePos>=275) {
// Tell menu to hide itself
_root.menu.hideMenu();
}
}

this.myXML.onLoad = function(success) {
if (success) {
trace("XML Loaded!");
_global.allNodes = this.firstChild.childNodes;
_global.hidden = true;

trace("Total Pages: " + allNodes.length);
j = 0;
while (j<allNodes.length) {
duplicateMovieClip(_root.pages["page"], "page"+j, j);
setProperty(_root.pages["page"+j], _y, j*239);
_root.pages["page"+j].location = -j*239;
titles.push(allNodes[j].attributes.title);
positions.push(_root.pages["page"+j].location);
if (allNodes[j].nodeName == "page") {
_root.pages["page"+j].pageTitle = allNodes[j].attributes.title;
var linkText = allNodes[j].attributes.name;
_root.menu.menu_txt.html = true;
_root.menu.menu_txt += "<a href=\"asfunction:_root.pageMove,"+positions[j]+"\">"+linkText+"</a><br>";
}
j++;
}
for (k=0; k<titles.length; k++) {
_root.pages["page"+k].title = titles[k];
}
for (i=0; i<allNodes.length; i++) {
page_content[i] = allNodes[i].childNodes;
}
for (k=0; k<page_content.length; k++) {
for (l=0; l<page_content[k].length; l++) {

//HIER INFO LADEN
_root.pages[l].page.contentBox.html = true;
if (page_content[k][l].nodeName == "info") {
_root.pages["page"+[k]].contentBox.html = true;
_root.pages["page"+[k]].contentBox = page_content[k][l];
}
//HIER DIRECTOR LADEN
_root.pages[l].page.dir.html = true;
if (page_content[k][l].nodeName == "director") {
_root.pages["page"+[k]].dir.html = true;
_root.pages["page"+[k]].dir = page_content[k][l];
}
//HIER JAAR LADEN
_root.pages[k].page.jaar.html = true;
if (page_content[k][l].nodeName == "jaar") {
_root.pages["page"+[k]].jaar.html = true;
_root.pages["page"+[k]].jaar = page_content[k][l];
}
}
}
} else {
trace("XML didn't load.");
}
}

this.myXML.load("projecten.xml");



de link naar de xml en de fla is hier te vinden: http://www.skrudge.net/flash/

ik hoop dat iemand me hiermee kan helpen.
alvast bedankt :)

dave_ddc
%Europe/Berlin %545 %2006, 14:05
Ik heb hetzelfde probleem maar ik denk dat ik ondertussen al weet aan wat het ligt;
de elementen in het xml hebben 'ELLEMENT_NODE' als type, en om de nodeValue optie te kunnen gebruiken moeten ze 'TEXT_NODE' zijn.

Je kan dit oplossen door de childNodes te veranderen in Attributes en dan de childnodes.attributes optie te gebruiken, maar dat is zo omslachtig.

Weet iemand een betere oplossing?

skrudge
%Europe/Berlin %605 %2006, 15:32
de tags eromheen heb ik weggekregen door in de textfield properties rednder as html aan te zetten.
vooralsnog geen idee hoe die image in te laden binnen dit script, iemand suggesties?

theFlashWizard
%Europe/Berlin %667 %2006, 17:01
nog in een node lager pakken met .firstChild?

_global en _root ken je btw beter niet gebruiken.
Net zoals het oude get en set Property.

theFlashWizard
%Europe/Berlin %674 %2006, 17:11
teneerst zou ik geen _global gebruiken en geen _root:
Actionscript Tutorials -> het inladen probleem (http://www.flashfocus.nl/forum/showthread.php?t=6338#het inladen probleem)

Ook zou ik alle set en getProperty's vervangen voor de nieuwe notatie.

Voor het werken met plaatjes zijn verschillende tutz:
Actionscript Tutorials -> slideshows (http://www.flashfocus.nl/forum/showthread.php?t=6338#slideshows)

dave_ddc
%Europe/Berlin %884 %2006, 22:13
Mijn probleem is opgelost door gebruiken te maken Xpath.
www.xfactorstudio.com

CantGetRight
%Europe/Berlin %915 %2006, 22:58
@skrudge:

je moet veel meer gebruik maken van de mogelijkheden in xml, voorbeeld (as2.0):

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function(ok:Boolean) {
if(ok) {
maakMenu(this.firstChild);
}
}
xml.load("iets.xml");

function maakMenu(n:XMLNode) {
for(var page:XMLNode = n.firstChild; page != null; page = page.nextSibling) {
trace("deze pagina heet: "+page.attributes.name);
for(var c:Number = 0; c<page.childNodes.length; c++) {
var child =page.childNodes[c];
trace("hier is de node "+child.nodeName+" en zn tekst: "+child.firstChild.toString());
}
}
}


enzovoorts...
moet wel zeggen dat het me beter lijkt om de src van img en video als attribuut te gebruiken: <image src="blabla.jpg />
maar mss overdrijf ik nu :D