可以簡單地使用一個XML
對象的appendChild()
方法如下所示:
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}// end function
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var xml1:XML = <rootNode>
<parentNode>
<childNode>1</childNode>
</parentNode>
</rootNode>;
var xml2:XML = <rootNode>
<parentNode>
<childNode>2</childNode>
</parentNode>
</rootNode>;
xml1.parentNode.appendChild(xml2.parentNode.childNode);
trace(xml1); // output: <rootNode>
// <parentNode>
// <childNode>1</childNode>
// <childNode>2</childNode>
// </parentNode>
// </rootNode>
}// end function
}// end class
}// end package
[UPDATE]
還可以簡單地既XML
對象合併到一個XMLList
對象像下面:
var xmlList:XMLList = XMLList(xml1.toString().concat(xml2.toString())); // XMLList(xml1 + xml2)
trace(xmlList); // output: <rootNode>
// <parentNode>
// <childNode>1</childNode>
// </parentNode>
// </rootNode>
// <rootNode>
// <parentNode>
// <childNode>2</childNode>
// </parentNode>
// </rootNode>
[更新2]
我改寫了您的應用程序(以及您的應用程序發佈的部分),你可能想向你展示的方式採取:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.net.SharedObject;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class Main extends Sprite
{
private var _sharedObject:SharedObject;
private var _urls:Array;
private var _xmls:Vector.<XML>;
private var _xmlsLoaded:int;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}// end function
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
_sharedObject = SharedObject.getLocal("questions");
_sharedObject.data.category = Category.BOTH;
_xmls = new Vector.<XML>();
switch(_sharedObject.data.category)
{
case Category.ONE: loadXml("xml/category1.xml"); break;
case Category.TWO: loadXml("xml/category2.xml"); break;
case Category.BOTH: loadXml("xml/category1.xml", "xml/category2.xml"); break;
}// end switch
}// end function
private function loadXml(...urls):void
{
_urls = urls;
for each(var url:String in urls)
{
var urlLoader:URLLoader = new URLLoader(new URLRequest(url));
urlLoader.addEventListener(Event.COMPLETE, onUrlLoaderComplete);
}// end function
}// end function
private function onUrlLoaderComplete(e:Event):void
{
_xmls.push(XML(URLLoader(e.target).data));
if (_urls.length == ++_xmlsLoaded) traceXMLList();
}// end if
private function traceXMLList():void
{
trace(getXMLList(_xmls)); // output: <category1>
// <question>question 1</question>
// <question>question 2</question>
// </category1>
// <category2>
// <question>question 1</question>
// <question>question 2</question>
// </category2>
}// end function
private function getXMLList(_xmls:Vector.<XML>):XMLList
{
var xmlList:XMLList = new XMLList();
for (var i:uint = 0; i < _xmls.length; i++)
xmlList += _xmls[i];
return xmlList;
}// end function
}// end class
}// end package
internal class Category
{
public static const ONE:String = "one";
public static const TWO:String = "two";
public static const BOTH:String = "both";
}// end class
我想我明白你要什麼,但我很新的這個XML的東西。我會試試這個。謝謝。 – Rich 2011-05-06 01:45:47
我編輯了上面的代碼以包含您的建議,但現在我得到兩個「訪問未定義的屬性」錯誤myLoader和myLoader2,我不明白爲什麼。 – Rich 2011-05-06 10:35:32