XML DOM problem in Firefox

Discussion in 'Javascript' started by binnyva@gmail.com, Aug 3, 2005.

  1. Guest

    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/
     
    , Aug 3, 2005
    #1
    1. Advertising

  2. wrote:


    > 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.


    --

    Martin Honnen
    http://JavaScript.FAQTs.com/
     
    Martin Honnen, Aug 3, 2005
    #2
    1. Advertising

  3. Hi,

    Paul Gorodyansky wrote:
    >
    >
    > Martin, could you please look at another Mozilla/Firefox issue
    > related to your article in http://JavaScript.FAQTs.com/?
    > The approach offered in the article has a serious problem described
    > in this Newsgroup 2 days ago (I hope there is a solution):
    >
    > http://groups.google.com/group/comp.lang.javascript/msg/ec14e34bffb016f9?hl=en&


    Here is the link to the thread:
    http://groups.google.com/group/comp...64dba/ec14e34bffb016f9?hl=en#ec14e34bffb016f9


    --
    Regards,
    Paul
     
    Paul Gorodyansky, Aug 5, 2005
    #3
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    0
    Views:
    575
  2. Replies:
    3
    Views:
    552
    Stefan Behnel
    Aug 3, 2007
  3. Water Cooler v2
    Replies:
    0
    Views:
    426
    Water Cooler v2
    Nov 2, 2007
  4. Water Cooler v2
    Replies:
    1
    Views:
    1,178
    Martin Honnen
    Nov 2, 2007
  5. Alan
    Replies:
    6
    Views:
    1,671
Loading...

Share This Page