I have read in an xml document using javascript and before I display the data I want to be able to sort it in some way. I know of the sort() method for arrays but can I use it for my xml data?
Here's an example of my xml file
<?xml version="1.0" ?>
<products category="big stuff">
<item id="123">
<name ref="abc3">Unnamed Item1</name>
<des>C_Description not available</des>
</item>
<item id="456">
<name ref="abc1">Unnamed Item2</name>
<des>B_Description not available</des>
</item>
<item id="789">
<name ref="abc2">Unnamed Item3</name>
<des>A_Description not available</des>
</item>
</products>
and here's a section of my code
function initatepage(itemcategory, startPos) {
myxmlfile = 'xmls/'+itemcategory+'.xml';
if (document.implementation && document.implementation.createDocument)
{
xmlDoc = document.implementation.createDocument('', '', null);
xmlDoc.addEventListener('load', loadHandler, false);
xmlDoc.load(myxmlfile);
}
else if (window.ActiveXObject)
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.onreadystatechange = function() {
if(xmlDoc.readyState == 4) loadHandler()
};
xmlDoc.load(myxmlfile);
}
else
{
alert(getIncompatMsg());
return;
}
function loadHandler () {
myxmlDoc = xmlDoc.getElementsByTagName('products');
createStorepage(myxmlDoc, itemcategory, startPos);
} // end loadHandler
} // end initatepage
function createStorepage(myxmlDoc, itemcategory, startPos){
MaxxmlItemLen = myxmlDoc[0].childNodes.length;
//Here's where I want to sort the data before it enters the for loop
for (var i = 0; i < xmlItemLen; i++) {
currentNode = myxmlDoc[0].childNodes;
name = currentNode.childNodes[0].firstChild.nodeValue;
ref = currentNode.childNodes[0].getAttribute("ref");
shortdes = currentNode.childNodes[1].firstChild.nodeValue;
// then do something with data
} // end for
} // end createStorepage
any help will be greatfully received.
Carl
Here's an example of my xml file
<?xml version="1.0" ?>
<products category="big stuff">
<item id="123">
<name ref="abc3">Unnamed Item1</name>
<des>C_Description not available</des>
</item>
<item id="456">
<name ref="abc1">Unnamed Item2</name>
<des>B_Description not available</des>
</item>
<item id="789">
<name ref="abc2">Unnamed Item3</name>
<des>A_Description not available</des>
</item>
</products>
and here's a section of my code
function initatepage(itemcategory, startPos) {
myxmlfile = 'xmls/'+itemcategory+'.xml';
if (document.implementation && document.implementation.createDocument)
{
xmlDoc = document.implementation.createDocument('', '', null);
xmlDoc.addEventListener('load', loadHandler, false);
xmlDoc.load(myxmlfile);
}
else if (window.ActiveXObject)
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.onreadystatechange = function() {
if(xmlDoc.readyState == 4) loadHandler()
};
xmlDoc.load(myxmlfile);
}
else
{
alert(getIncompatMsg());
return;
}
function loadHandler () {
myxmlDoc = xmlDoc.getElementsByTagName('products');
createStorepage(myxmlDoc, itemcategory, startPos);
} // end loadHandler
} // end initatepage
function createStorepage(myxmlDoc, itemcategory, startPos){
MaxxmlItemLen = myxmlDoc[0].childNodes.length;
//Here's where I want to sort the data before it enters the for loop
for (var i = 0; i < xmlItemLen; i++) {
currentNode = myxmlDoc[0].childNodes;
name = currentNode.childNodes[0].firstChild.nodeValue;
ref = currentNode.childNodes[0].getAttribute("ref");
shortdes = currentNode.childNodes[1].firstChild.nodeValue;
// then do something with data
} // end for
} // end createStorepage
any help will be greatfully received.
Carl