XML DOM problem in Firefox

B

binnyva

Hi everyone.

I just made a JavaScript program to read a RSS feeds and display it in
a HTML file. The script - Jasfer or JAvaScript FEed Reader - is
available at http://www.geocities.com/binnyva/code/javascript/jasfer/

The problem that I have is that this script works only in IE. The XML
reading part goes fine - but I don't know how to access the DOM
sturcture in Firefox. The used code is given below.

/////////////////////////////////////// XML File Loading
///////////////////////////////////////
function xmlProcessor(data) {
nodes = data.documentElement.childNodes.item(0).childNodes
alert("Length : " + nodes.length
+ "\nFirst Item : " + nodes.item(0).nodeName
+ "\nFirst Item Value : " + nodes.item(0).childNodes[0].text);
}

//Firefox only function - happens when a XML file is loaded
function loadHandler () {
xmlProcessor(this); //Call the Commen function with 'this' data.
}

//Load the xml file - using different method for different browsers
function xmlLoad(xml_file) {
//Initializations
feed_id = 0;
feed_total = 0;

var xmlDocument = "";
feed_file = xml_file;
if(document.implementation.createDocument) {//Firefox
xmlDocument = document.implementation.createDocument('', '', null);
xmlDocument.load(xml_file);
xmlDocument.addEventListener('load', loadHandler, false); //This
function will happen when the file is loaded
}
else { //IE
var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
xmlDocument.async = false;
var loadResult = xmlDocument.load(xml_file);
if (loadResult) {
// process xml document with DOM methods e.g.
xmlProcessor(xmlDocument)
} else {
feedError();
return false;
}
}
return true;
}

xmlLoad("hhtp://www.geocities.com/binnyva/code/rss.xml");

/////////////////////////////////

The script works well in both bowers(IE and Firefox) till the
xmlProcessor() function is reached. I don't know how to use XML DOM
structure in Firefox. If any one knows the location of a good
tutorial/manual about this feature, please let me know.

Any help to get this script working in Firefox(and other browers) is
greatly appreciated.

Thanks.
Binny V A
http://binnyva.blogspot.com/
 
M

Martin Honnen

function xmlProcessor(data) {
nodes = data.documentElement.childNodes.item(0).childNodes

Trying to work with the childNodes collection in the hope that you find
a certain node at a certain index is indeed dangerous in cross browser
scripting. The problem is that Mozilla always includes text nodes with
white space in the DOM while MSXML used by IE for XML does not do that
by default. So your attempt to use
data.documentElement.childNodes.item(0)
could end up being an element node with MSXML/IE but a text node with
Mozilla.
There are however other ways to access nodes, if you are looking for
certain elements then there is
data.getElementsByTagName('tagname').item(0)
Or use childNodes but make sure that you check the nodeType of a node to
be 1 if you are looking for element nodes.
 
P

Paul Gorodyansky

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,990
Messages
2,570,211
Members
46,796
Latest member
SteveBreed

Latest Threads

Top