A Flash Developer Resource Site

Results 1 to 4 of 4

Thread: can help me with my flash xml loading?

  1. #1
    Junior Member
    Join Date
    Jun 2006
    Posts
    1

    can help me with my flash xml loading?

    i want to load a xml file very dynamically in flash. i have a xml file as blow:

    <?xml version="1.0"?>

    <cbs>

    <employee>
    <number>1</number>
    <name>Shi Chuan</name>
    <comment>intern</comment>
    </employee>

    <employee>
    <number>1</number>
    <name>Shang</name>
    <comment>flasher</comment>
    </employee>

    <employee>
    <number>2</number>
    <name>Jakson</name>
    <comment>rapist</comment>
    </employee>

    <employee>
    <number>2</number>
    <name>Charles</name>
    <comment>director</comment>
    </employee>

    </cbs>


    when i load it in flash, i hope flash can recognize the value between the <number> tag. and put them into two groups(number 1 one group, number 2 another group) according to their number. in this case, it should display:

    1st group:

    Shi Chuan
    intern;
    Shang
    flasher

    2nd group:

    Jakson
    rapist;
    Charles
    director


    if i add one more node in xml like below:

    <employee>
    <number>1</number>
    <name>John</name>
    <comment>healer</comment>
    </employee>


    i hope flash can auto-update the info and display:

    1st group:

    Shi Chuan
    intern;
    Shang
    flasher;
    john
    healer


    2nd group:

    Jakson
    rapist;
    Charles
    director;
    john
    healer


    don't know if you guys have any idea how to make it.
    pls help me! thank you.

  2. #2
    up to my .as in code Chris_Seahorn's Avatar
    Join Date
    Dec 2004
    Posts
    4,389
    All of this assumes you use a number value of 1 or 2 as your posted xml suggests.

    Here is a quick example that will at least show you how to dig out the nodes depending on what that number value is. In this I send all users with a value of "1" to one textfield and all with a value of "2" to the other textfield.

    http://actionscript.hobby-site.com/e...s/freebie.html

    It uses a flash movie with two textfields. One with an instance name of "txt1" and one with an instance name of "txt2". This puppy only needs one frame so post this in the actions for frame 1:

    Code:
    Group1 = new Array();
    Group2 = new Array();
    
    my_xml = new XML();
    my_xml.load("./freebie.xml");
    my_xml.ignoreWhite = true;
    my_xml.onLoad = function(Success){
    	if (Success){
               dissect();
    		  
    	}else{
    		txt1.text= "xml error.";
    	}
    };
    txt1.text="";
    txt2.text="";								 
    function dissect() {
    i=0;
    for (p=0; p<my_xml.firstChild.childNodes.length; p++) {
    if(my_xml.firstChild.childNodes[p].childNodes[0].childNodes[0].nodeValue=="1"){
                     Group1.push(my_xml.firstChild.childNodes[i].childNodes[0].childNodes[0].nodeValue+"\n");
    			    Group1.push(my_xml.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue+"\n");
    			   Group1.push(my_xml.firstChild.childNodes[i].childNodes[2].childNodes[0].nodeValue+"\n");
    			   i++;
    			
    				txt1.text = Group1;
    			
    			
    			}else{
    			 Group2.push(my_xml.firstChild.childNodes[i].childNodes[0].childNodes[0].nodeValue+"\n");
    			    Group2.push(my_xml.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue+"\n");
    			   Group2.push(my_xml.firstChild.childNodes[i].childNodes[2].childNodes[0].nodeValue+"\n");
    			   i++;
    	           txt2.text = Group2;
    			
    	}
    	}
    	}
    	}
    stop();
    The freebie.xml file I used is just your original with me adding new ones from the backend that automatically show just like you requested:

    Code:
    <?xml version="1.0"?>
    
    <cbs>
    
    <employee>
    <number>1</number>
    <name>Shi Chuan</name>
    <comment>intern</comment>
    </employee>
    
    <employee>
    <number>1</number>
    <name>Shang</name>
    <comment>flasher</comment>
    </employee>
    
    <employee>
    <number>2</number>
    <name>Jakson</name>
    <comment>rapist</comment>
    </employee>
    
    <employee>
    <number>2</number>
    <name>Charles</name>
    <comment>director</comment>
    </employee>
    
    <employee>
    <number>1</number>
    <name>Chris</name>
    <comment>XMLFreak</comment>
    </employee>
    
    <employee>
    <number>2</number>
    <name>Filipe</name>
    <comment>Chef</comment>
    </employee>
    
    <employee>
    <number>2</number>
    <name>Pierre</name>
    <comment>Bellhop</comment>
    </employee>
    
    </cbs>

    This help?

  3. #3
    up to my .as in code Chris_Seahorn's Avatar
    Join Date
    Dec 2004
    Posts
    4,389
    In that last reply I posted it sending the sections to an array since that is useful. If you were going to repurpose those sections later in the movie...the arrays would come into play.

    You may however simply want to send the values concatenated to a html enabled textfield if you have no need for the arrays created and only want a simple display.

    Instead of displaying the raw arrays we could maybe:

    http://actionscript.hobby-site.com/e.../freebie2.html

    by using this script on frame 1 and making both textfields html enabled:]

    Code:
    my_xml = new XML();
    my_xml.load("./freebie.xml");
    my_xml.ignoreWhite = true;
    my_xml.onLoad = function(Success){
    	if (Success){
               dissect();
    		  
    	}else{
    		txt2.text= "xml error";
    	}
    };
    txt1.htmlText="<u><b>Group 1 Users</b></u><br><br>";
    txt2.htmlText="<u><b>Group 2 Users</b></u><br><br>";								 
    function dissect() {
    i=0;
    for (p=0; p<my_xml.firstChild.childNodes.length; p++) {
    if(my_xml.firstChild.childNodes[p].childNodes[0].childNodes[0].nodeValue=="1"){
                   //in this example we drop the number from display since it's obvious
                   	//txt1.htmlText += my_xml.firstChild.childNodes[i].childNodes[0].childNodes[0].nodeValue+"<br>";
    			    	txt1.htmlText += "<b>"+my_xml.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue+"</b><br>";
    			   	txt1.htmlText += my_xml.firstChild.childNodes[i].childNodes[2].childNodes[0].nodeValue+"<br>";
    			   i++;
    			
    			
    			
    			
    			}else{
    		//in this example we drop the number from display since it's obvious
    			 //txt2.htmlText += my_xml.firstChild.childNodes[i].childNodes[0].childNodes[0].nodeValue+"<br>";
    			    txt2.htmlText += "<b>"+my_xml.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue+"</b><br>";
    			   txt2.htmlText += my_xml.firstChild.childNodes[i].childNodes[2].childNodes[0].nodeValue+"<br>";
    			   i++;
    	        
    			
    	}
    	}
    	}
    	}
    	stop();

  4. #4

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center