Link to home
Start Free TrialLog in
Avatar of Fleurys
Fleurys

asked on

Trying to merge three xml files with Javascript successful in IE but having problems with Firefox

Hi,

I’m trying to merge three xml files in memory. I’ve been successful with IE but the Firefox routine is being problematic. My intention is to merge the ‘B & C’ files into the ‘A’ file. All seems to work well until I get to the second ‘iterateNext’ statement, at which point I receive the following error from Firefox: “An attempt was made to use an object that is not, or is no longer, usable code: 11”.

A snippet is as follows:


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Portfolio Management 2.0 --</title>


<script>
      
      var A_doc;
      var B_doc;
      var C_doc;
      
      var A_file;
      var B_file;
      var C_file;
      
      var A_svar;
      var B_svar;
      var C_svar;

      var XML = new Object;


      

      A_file       = "A.xml"
      B_file       = "B.xml"
      C_file       = "C.xml"      


      function loadXMLDoc(fname)
      {
            var xmlDoc;
            // code for IE
            if (window.ActiveXObject) {
                    //xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                  xmlDoc=new ActiveXObject("Msxml2.DOMDocument");
              }
            // code for Mozilla, Firefox, Opera, etc.
            else
             if (document.implementation && document.implementation.createDocument) {
                    xmlDoc=document.implementation.createDocument("","",null);
              }
            else {
                    alert('Your browser cannot handle this script');
              }
            xmlDoc.async=false;
            xmlDoc.load(fname);
            return(xmlDoc);
      }

      function mergeFiles()
      {      
      
            A_doc       = loadXMLDoc(A_file);
            B_doc       = loadXMLDoc(B_file);
            C_doc       = loadXMLDoc(C_file);
            
            // code for IE
            if (window.ActiveXObject) {
                A_doc.sBroperty("SelectionLanguage","XPath");
                B_doc.sBroperty("SelectionLanguage","XPath");
                C_doc.sBroperty("SelectionLanguage","XPath");
                
                var sysnodes = A_doc.selectNodes("data/systems/system");
                
                if (sysnodes.length > 0)
                {      
                      // Spin through the System Nodes
                      for (i=0; i<sysnodes.length; i++){
                            A_svar      = sysnodes[i].getElementsByTagName("s_var")[0].childNodes[0].nodeValue;
                            
                            //  Add in the associated B Nodes
                            var Bnodes = B_doc.selectNodes("data/systems/system[s_var=" + A_svar +"]/mlstns");
                            if (Bnodes.length > 0 ){
                            var x1 = sysnodes[i];
                            x1.appendChild(Bnodes[0]);}
                            
                            var Cnodes = C_doc.selectNodes("data/systems/system[s_var=" + A_svar + "]/budg");
                            if (Cnodes.length > 0 ){
                            var x2 = sysnodes[i];
                            x2.appendChild(Cnodes[0]);}
                            
                            var Cnodes = C_doc.selectNodes("data/systems/system[s_var=" + A_svar + "]/actl");
                            if (Cnodes.length > 0 ){
                            var x3 = sysnodes[i];
                            x3.appendChild(Cnodes[0]);}
                            
                            var Cnodes = C_doc.selectNodes("data/systems/system[s_var=" + A_svar + "]/bes");
                            if (Cnodes.length > 0 ){
                            var x4 = sysnodes[i];
                            x4.appendChild(Cnodes[0]);}
                            
                      }
                }

              }
            // code for Mozilla, Firefox, Opera, etc.
            else
            if (document.implementation && document.implementation.createDocument) {
                  var sysNodes = A_doc.evaluate("data/systems/system",A_doc,null, XPathResult.ANY_TYPE,null);
                        

                  var system=sysNodes.iterateNext();
                  while (system)
                  {
            
                        A_svar      = system.getElementsByTagName("s_var")[0].childNodes[0].nodeValue;
                        
                        //  Add in the associated B Nodes
                        var Bnodes = B_doc.evaluate("data/systems/system[s_var=" + A_svar +"]/mlstns",B_doc,null, XPathResult.ANY_TYPE,null);
                        B = Bnodes.iterateNext();
                        if (B){
                        system.appendChild(B);}
                        
                        var Cnodes = C_doc.evaluate("data/systems/system[s_var=" + A_svar + "]/budg",C_doc,null, XPathResult.ANY_TYPE,null);
                        var C2 = Cnodes.iterateNext();
                        if (C2){
                        system.appendChild(C2);}
                        
                        var Cnodes = C_doc.evaluate("data/systems/system[s_var=" + A_svar + "]/actl",C_doc,null, XPathResult.ANY_TYPE,null);
                        var C3 = Cnodes.iterateNext();
                        if (C3){
                        system.appendChild(C3);}
                        
                        var Cnodes = C_doc.evaluate("data/systems/system[s_var=" + A_svar + "]/bes",C_doc,null, XPathResult.ANY_TYPE,null);
                        var C4 = Cnodes.iterateNext();
                        if (C4){
                        system.appendChild(C4);}
                  
                        system=sysNodes.iterateNext();      ******* Firefox gives me a Code 11  Error on this line   *****
                  }
              }
      }
                                             
</script>
</head>

<body onLoad="mergeFiles()">
<center>
<div id="xslt_as_html"></div>
</center>
<br />
</body>
</html>
ASKER CERTIFIED SOLUTION
Avatar of Fleurys
Fleurys

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial