| home / experts / xml / column82 |
|
Let's put the newly acquired knowledge on XML in Flash to good use by creating an RSS movie. Here are the instructions:
0 //$Id: rss_parser.as,v 1.2 2003/05/19 11:17:06 filti Exp $ 1 2 // declaring variables 3 var channelTag = "channel"; 4 var titleTag = "title"; 5 var itemTag = "item"; 6 var document = new XML(); 7 8 function getElementsByTagName(xmlDoc, tagname, xmlObjArray){ 9 var Nodes = null; 10 if(xmlObjArray == null){ 11 Nodes = new Array(); 12 }else{ 13 Nodes = xmlObjArray; 14 } 15 16 if(xmlDoc.hasChildNodes()){ 17 for(var i=0; i < xmlDoc.childNodes.length; i++){ 18 if( (xmlDoc.childNodes[i].nodeType == 1) && 19 (xmlDoc.childNodes[i].nodeName == tagname)){ 20 Nodes.push(xmlDoc.childNodes[i]); 21 } 22 getElementsByTagName(xmlDoc.childNodes[i], tagname, Nodes); 23 } 24 } 25 return Nodes; 26 } 27 28 29 function myLoadHandler(success){ 30 31 if(success && document.status == 0){ 32 // retrieving the channel element, get the content of the title 33 // tag and setting the textfield named "channeltitle" in our Movie 34 var channel = getElementsByTagName(document, channelTag, null)[0] 35 _level0.channeltitle = getTitleText(getFirstTitleElement(channel)); 36 37 // retrieving all items from the rss file 38 var itemsArr = getElementsByTagname(document, itemTag, null); 39 40 // this the y-position for the first entry generated from items 41 var yPos = 20; 42 43 //iterating over the array 44 for(var i=0; i < itemsArr.length; i++){ 45 //place an instance of the symbol on the stage 46 //Note: the third argument (depth) means the z level 47 // in which the new movie is placed 48 _root.attachMovie("itemtemplate", "clip" + i, i+10); 49 50 with(eval("clip" + i)) { 51 //setting the textfield of the new movie 52 textfield = getTitleText(getFirstTitleElement(itemsArr[i])); 53 // place the movie 54 _y = yPos; 55 //set the position for the next instance of the symbol 56 yPos += _height; 57 } 58 } 59 }else{ 60 _level0.channeltitle = document.loaded + " " + document.status; 61 } 62 } 63 64 //returns the node value of the first child of a node 65 //assumption is: first child is a textnode and has a value 66 function getTitleText(titleElement){ 67 return titleElement.firstChild.nodeValue; 68 } 69 70 //returns the first node with tag title of a xml object 71 function getFirstTitleElement(xmlObjArray){ 72 return getElementsByTagName(xmlObjArray, titleTag, null)[0]; 73 } 74 75 document.onload = myLoadHandler; 76 document.load("xml/index.rss"); |



![]() |
![]() |
The Flash XML parser allows Flash movies to receive and manipulate XML data on-the-fly. It can handle small, wellformed XML documents and presents a lightweight, DOM-oriented but proprietary API.
Andreas "Filti" Woitzick is a freelance software developer focusing on tools and architecture for Web applications. He enjoys wrestling with Flash to create friendly applications, rather than just scary movies...
Produced by Michael Claßen
URL: http://www.webreference.com/xml/column82/4.html
Created: May 26, 2003
Revised: May 26, 2003