Loading multiple XML files on LINKED LIST concept
When we load multiple XML files, we have two ways to load.
One is like....
my_xml.load("my_xml.xml");
ur_xml.load("ur_xml.xml");
another_xml.load("another_xml.xml");
The way is good, But there are some drawbacks.
1. If XML file is bigger, the application will be hang.
2. If all 3 have same importance and any one would not loaded, there may be chance to start your application with incomplete data. For this you may need to check counter.
For chain loading of XML I have tried something, The code may need to be refinement but the logic is very similar to LINKED LIST......
Here we are...
//XML Connections....
var asn_arr = new Array();
var pers_arr = new Array();
var asn_xml = new XML();
var pers_xml = new XML();
var heading_xml = new XML();
//Taking advantage of class dynamism...
heading_xml.mv = asn_xml.mv = pers_xml.mv = this;
heading_xml.ignoreWhite = asn_xml.ignoreWhite = pers_xml.ignoreWhite = true;
//Chain reaction starts...
asn_xml.load("xmls/taskDetails.xml");
heading_xml.onLoad = function(success)
{
if(!success)
{
Debug.write("Fail to load! Trying again....");
this.load("xmls/heading.xml");
}
else
{
Debug.write("XML has loaded successfully...");
if(this.hasChildNodes())
{
_root.heading = this.lastChild.lastChild;
}
//Finally your all data is loaded. Do what ever you want...
this.mv.personal_btn.onRelease();
_root.loadContents();
}
}
pers_xml.onLoad = function(success)
{
if(!success)
{
Debug.write("Fail to load! Trying again....");
this.load("xmls/personnel.xml");
}
else
{
Debug.write("XML has loaded successfully...");
if(pers_xml.hasChildNodes())
{
for(var i = 0; i < pers_xml.lastChild.childNodes.length; i++)
{
var nodes = pers_xml.lastChild.childNodes[i];
var obj = new Object();
obj.id = nodes.childNodes[0].lastChild;
obj.cat = nodes.childNodes[1].lastChild;
obj.nam = nodes.childNodes[2].lastChild;
obj.rank = nodes.childNodes[3].lastChild;
obj.skill = nodes.childNodes[4].lastChild;
obj.locations = nodes.childNodes[5].lastChild;
obj.availability = nodes.childNodes[6].lastChild;
obj.hrs_left = nodes.childNodes[7].lastChild;
obj.training = nodes.childNodes[8].lastChild;
obj.exps = nodes.childNodes[9].lastChild;
obj.last_shift = nodes.childNodes[10].lastChild;
pers_arr.push(obj);
}
}
this.mv.heading_xml.load("xmls/heading.xml");
}
}
asn_xml.onLoad = function(success)
{
if(!success)
{
Debug.write("Failed to load! Trying again....");
this.load("xmls/taskDetails.xml");
}
else
{
if(asn_xml.hasChildNodes())
{
for(var i = 0; i < asn_xml.lastChild.childNodes.length; i++)
{
var nodes = asn_xml.lastChild.childNodes[i];
var obj = new Object();
//assignment details...
obj.client = nodes.childNodes[0].childNodes[0].lastChild;
obj.task = nodes.childNodes[0].childNodes[1].lastChild;
obj.rank = nodes.childNodes[0].childNodes[2].lastChild;
obj.site = nodes.childNodes[0].childNodes[3].lastChild;
obj.date = nodes.childNodes[0].childNodes[4].lastChild;
obj.hrs = nodes.childNodes[0].childNodes[5].lastChild;
obj.skill = nodes.childNodes[0].childNodes[6].lastChild;
//client preferences...
obj.pref1 = nodes.childNodes[1].childNodes[0].lastChild;
obj.pref2 = nodes.childNodes[1].childNodes[1].lastChild;
obj.pref3 = nodes.childNodes[1].childNodes[2].lastChild;
obj.pref4 = nodes.childNodes[1].childNodes[3].lastChild;
obj.pref5 = nodes.childNodes[1].childNodes[4].lastChild;
obj.pref6 = nodes.childNodes[1].childNodes[5].lastChild;
this.mv.asn_arr.push(obj);
}
}
this.mv.pers_xml.load("xmls/personnel.xml");
}
}
There are several more ways to load data on DATA STRUCTURE concepts. Need to explore...till then bye
Posted by delhens
at 10:29 AM
Updated: Wednesday, 24 August 2005 10:39 AM