Solved

loadXML in FF

Posted on 2006-07-19
4
987 Views
Last Modified: 2008-01-09
Hi Experts,

I have a problem with the following code. The problem is that code works in IE and doesn't work in FF.
Please advice.

Thanks in advance

<HTML>
<HEAD>
<TITLE></TITLE>
<script>
function getXMLDocument()
      {
            var xDoc=null;
            if (document.implementation
                              && document.implementation.createDocument)
            {
                  xDoc=document.implementation.createDocument("","",null);
            }
            else if (typeof ActiveXObject != "undefined")
            {
                  var msXmlAx=null;
                  try
                  {
                              msXmlAx=new ActiveXObject("Msxml2.DOMDocument");
                  }
                  catch (e)
                  {
                        msXmlAx=new ActiveXObject("Msxml.DOMDocument");
                  }
                  xDoc=msXmlAx;
            }
            if (xDoc==null || typeof xDoc.load=="undefined")
            {
                  xDoc=null;
            }
            return xDoc;
      }

var txt = "<ruleValues><rule_value><value>v 1</value><name>value 1</name></rule_value><rule_value><value>v 2</value><name>value 2</name></rule_value></ruleValues>";
function test()

{
      xmldoc = getXMLDocument();
      //xmldoc.load("xml.xml");      
      xmldoc.loadXML(txt);
      ruleValues = xmldoc.getElementsByTagName("ruleValues");
      ruleValueNodes = ruleValues(0).childNodes;
      for (i = 0;  i < ruleValueNodes.length; i++)
      {
            valueNode = ruleValueNodes(i);
            id =  valueNode.childNodes(0).text;
            value =  valueNode.childNodes(1).text;
            alert("ID: " + id + " value: " + value);
      }      
}
</script>
</HEAD>
<BODY>
<input type="button" value="Test" onClick="test()">
</BODY>
</HTML>
0
Comment
Question by:RozanaZ
  • 3
4 Comments
 
LVL 17

Accepted Solution

by:
Suat Ozgur earned 500 total points
ID: 17142792
Hi,

This is how I would solve the issue for Firefox:

function test(){
     xmldoc = getXMLDocument();
     if (window.ActiveXObject){
          xmldoc.loadXML(txt);
     }else if(document.implementation.createDocument){
          var vParser = new DOMParser();
          xmldoc = vParser.parseFromString(txt, "text/xml");
     }

     ruleValues = xmldoc.getElementsByTagName("ruleValues");
     ruleValueNodes = ruleValues[0].childNodes;

     for (i = 0;  i < ruleValueNodes.length; i++){
          id =  ruleValueNodes[i].childNodes[0].childNodes[0].nodeValue;
          value =  ruleValueNodes[i].childNodes[1].childNodes[0].nodeValue;
          alert("ID: " + id + " value: " + value);
     }    
}

Simply; ruleValueNode includes 2 tags, "value" and "name": these tags include a single element, a text node (text content - childNodes[0]). Then nodeValue returns the this node's value that we can get by using .text property in IE but FF. So we used nodeValue in the sample code.

I hope it helps.

Suat
0
 
LVL 17

Expert Comment

by:Suat Ozgur
ID: 17142805
You can see following page for retrieving XML Data for Firefox and differences between IE and Firefox.
http://www.webreference.com/programming/prof_ajax/3.html

Suat
0
 
LVL 8

Author Comment

by:RozanaZ
ID: 17142823
Just perfect!
Thanks a lot!
0
 
LVL 17

Expert Comment

by:Suat Ozgur
ID: 17142833
You're welcome!

Thanks for the A grade!
Suat
0

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article shows how to create and access 2-dimensional arrays in JavaScript.  It includes a tutorial in case you are just trying to "get your head wrapped around" the concept and we'll also look at some useful tips for more advanced programmers. …
In this article, we'll look how to sort an Array in JavaScript, including the more advanced techniques of sorting a collection of records either ascending or descending on two or more fields. Basic Sorting of Arrays First, let's look at the …
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

786 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question