Pull certain elements from xml as needed
I'm a little stuck and could really use some help. I posted a question on here previously, but I figured out what the issue was there... sort of. Not completely, but enough to know I may be in over my head trying to adjust it.
So now I'm asking if anyone has heart enough to tell me how I would take this code and fix it so that I can include swf and image files only when I need them. They won't always be in every node:
var pageXMLLoader = new URLLoader();
pageXMLLoader.load(new URLRequest("scripts/xml/content.xml"));
pageXMLLoader.addEventListener(Event.COMPLETE, pageXMLLoaded);
//This function is called when the XML file is loaded
function pageXMLLoaded(e:Event):void {
//Create a new XML object from the loaded XML data
//pageXML = new XML(pageXMLLoader.data);
pageXML = new XML(e.target.data);
}
// Set page number variable
var pageNumber:uint;
mcContent.y = 30;
// Set up if for mouse click
if (e.type == MouseEvent.CLICK) {
// Switch based on target name
switch (e.currentTarget.name) {
case "navBtn0" :
trace(e.currentTarget.name);
pageNumber = 1;
mcContent.removeChildAt(0);
mcContent.addChildAt(pageContent,0);
pageContent.addChild(contentTxt);
pageContent.addChild(headingTxt);
break;
case "navBtn1" :
trace(e.currentTarget.name);
pageNumber = 2;
mcContent.removeChildAt(0);
mcContent.addChildAt(pageContent,0);
pageContent.addChild(contentTxt);
pageContent.addChild(headingTxt);
break;
case "navBtn2" :
... code shortened
}
// Loop through the XML file
for each (var page:XML in pageXML.pages.page) {
// "page.@pagenumber" points to "pagenumber" in the XML file.
if (page.@ pagenumber == pageNumber) {
// Set the title
headingTxt.htmlText = page.title;
// Set the pa开发者_开发问答ge content
contentTxt.htmlText = page.content;
contentRTopTxt.htmlText = page.contenttr;
contentRBottomTxt.htmlText = page.contentbr;
// Exit the loop
break;
}
} // < /For Loop >
I got lost in your code, but here is a quick example on how you could retrieve the correct page using E4X (var pageContent : XML = pageXML.pages.page.(@pagenumber == 1)[0];)
and also a check if image or SWF exists.
Test.as
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class TestXMLPages extends Sprite
{
private var pageXML : XML;
private var swfContainer : Sprite = new Sprite();
private var imgContainer : Sprite = new Sprite();
private var imgLoader : Loader = new Loader();
private var swfLoader : Loader = new Loader();
public function TestXMLPages()
{
super();
var pageXMLLoader : URLLoader = new URLLoader();
pageXMLLoader.load(new URLRequest("xml/content.xml"));
pageXMLLoader.addEventListener(Event.COMPLETE, pageXMLLoaded);
}
private function pageXMLLoaded(e : Event) : void
{
pageXML = new XML(e.target.data);
// select page with pagenumber 1
var pageContent : XML = pageXML.pages.page.(@pagenumber == 1)[0];
// has image?
if(pageContent.image.length() > 0)
trace("add image!")
// has swf?
if(pageContent.swfURL.length() > 0)
trace("add swf!")
trace(pageContent.toXMLString())
}
}
}
content.xml
<?xml version="1.0" encoding="utf-8"?>
<site>
<!--<sitetitle><![CDATA[<strong>Transplant the Heart</strong>]]></sitetitle>-->
<pages>
<page pagenumber="1">
<title><![CDATA[<h1>Page #1</h1>]]></title>
<content><![CDATA[<p>Aliquam nec dui neque. Aenean rutrum suscipit turpis vel fringilla. </p>]]></content>
<contenttr><![CDATA[Cras non risus nisi. Nam tincidunt lacinia massa, vel interdum massa ultricies.]]></contenttr>
<contentbr><![CDATA[Aliquam erat volutpat. Etiam eget mauris ante, sit amet placerat tortor.]]></contentbr>
<image>imgs/png/titleLarge.png</image>
<swfURL>transplantSpecialists.swf</swfURL>
</page>
<page pagenumber="2">
<title><![CDATA[<h1>Page #2</h1>]]></title>
<content><![CDATA[<p>Aliquam nec dui neque. Aenean rutrum suscipit turpis vel fringilla. </p>]]></content>
<contenttr><![CDATA[Cras non risus nisi. Nam tincidunt lacinia massa, vel interdum massa ultricies.]]></contenttr>
<contentbr><![CDATA[Aliquam erat volutpat. Etiam eget mauris ante, sit amet placerat tortor.]]></contentbr>
</page>
</pages>
</site>
精彩评论