對於AS3來說,讀取和存儲數據的方式是最快的。對於現在的調試,它只是讀取原始XML,但我懷疑如果我將它們變成嵌套數組,它會更快。在AS3中存儲和解析數據的最有效方式是什麼?
將XML解析爲嵌套數組以供稍後閱讀是最有效的方法?還是有更好的方法來讀取大量數據?
對於AS3來說,讀取和存儲數據的方式是最快的。對於現在的調試,它只是讀取原始XML,但我懷疑如果我將它們變成嵌套數組,它會更快。在AS3中存儲和解析數據的最有效方式是什麼?
將XML解析爲嵌套數組以供稍後閱讀是最有效的方法?還是有更好的方法來讀取大量數據?
好pasring一個xml到數組具有各種優勢,如上面提到的意見.. 您將如何得到嵌套數組的示例XML
<mynode4 swf="node4.swf" htmlpage="">
<subheading1 swf="L4_s1.swf" htmlpage="L4_1.htm">Work Hard</subheading1>
<subheading2 swf="L4_s2.swf" htmlpage="L4_2.htm">karachi</subheading2>
<subheading3 swf="L4_s3.swf" htmlpage="L4_3.htm">Newyork City.</subheading3>
</mynode4>
<mynode5 swf="five.swf" htmlpage="">Here is the Test for node 5</mynode5>
<mynode6 swf="six.swf" htmlpage="">Last node accessed</mynode6>
VAR uLoader:的URLLoader = new URLLoader() uLoader.addEventListener(Event.COMPLETE,onXMLLoaded) uLoader.load(new URLRequest(「xmldata.xml」))
公共函數onXMLLoaded(事件:事件):無效{
var loader:URLLoader = URLLoader(event.target);
var root1:XML = new XML(loader.data);
var showChilds:XMLList = root1.children();
var nodes_names2 :Array = new Array();
var nodes_swf2 :Array = new Array();
var nodes_values2 :Array = new Array();
var nodes_pages2 :Array = new Array();
var take_items:Array = recursiveXML(showChilds,nodes_names2,nodes_swf2,nodes_values2,nodes_pages2,0);
this.nodes_names2 = take_items[0];
this.nodes_swf2 = take_items[1];
this.nodes_values2 = take_items[2];
this.nodes_pages2 = take_items[3];
trace(nodes_names2);
trace(nodes_swf2);
trace(nodes_values2);
trace(nodes_pages2);
}
公共函數recursiveXML(showChilds:XMLList中,nodes_names:陣列,nodes_swf:陣列,nodes_values:陣列,nodes_pages:陣列, count:int):Array {
for each (var eachChild:XML in showChilds)
{
if(eachChild.hasComplexContent())
{
nodes_names[count] = new Array((eachChild.children().length()))
nodes_swf[count] = new Array((eachChild.children().length()))
nodes_values[count] = new Array((eachChild.children().length()))
nodes_pages[count] = new Array((eachChild.children().length()))
nodes_names[count][0] = eachChild.name()
nodes_swf[count][0] = eachChild.attribute("swf");
nodes_values[count][0] = "";
nodes_pages[count][0] = "";
var showChilds:XMLList = eachChild.children();
var take_items:Array = recursiveXML(showChilds,nodes_names[count],nodes_swf[count],nodes_values[count],nodes_pages[count] , 1);
nodes_names[count] = take_items[0];
nodes_swf[count] = take_items[1];
nodes_values[count] = take_items[2];
nodes_pages[count] = take_items[3];
count++;
}
else
{
nodes_names[count] = eachChild.name();
nodes_swf[count] = eachChild.attribute("swf");
nodes_pages[count] = eachChild.attribute("htmlpage");
nodes_values[count] = eachChild.text();
count++;
}
}
var _items:Array = new Array(nodes_names, nodes_swf,nodes_values,nodes_pages);
return _items;
}
第一次解析XML時,您可以將數據存儲在Object中,以便隨後在需要時更容易/更快地檢索一組屬性。
如果您願意,可以將此對象視爲多維數組。
與Array.sortOn方法結合使用時,轉換爲對象也可能會有所幫助。您也可以考慮使用JSON作爲傳輸格式;它將消除解析和轉換XML的開銷。
定義「大量數據」。 – Raveline 2010-09-22 08:56:18