We have found on anything but the smallest XML nodes that getElementsByTagName sometimes fails to find nodes that our replacement function finds 100% reliably. YMMV, but that's what we've found and since this person is reporting an intermittent null object error the symptoms match.
I guess in the absence of any word back about this we'll never know if getElementsByTagName was to blame in this case. Guy On 27/04/2007, at 1:53 AM, domenico_strazzullo wrote: > Hum... to my experience getElementsByTagNameNS works very well in > IE/ASV. There's a syntax error in the script but I suppose it's just a > typo while pasting portions of the script, somehow? (It's always > better to include scripts as they appear in the editor). I also > suppose you're calling addGeom(node) from a for loop, so I think the > architecture you're using is not safe, in that you are recursively and > unnecessarily repopulating myTile. Worse for worse, declare it as > global and push the new element. As a test, reading childNodes or > hasChildNodes or myTile.length might very well give anarchic results. > I would rather play it safe, i.e. append all the children first, and > then execute the data conversions. And by the way, if "featureMember"s > are the only children of 'xmlobjects' then you can skip creating > myTyle altogether and just use xmlobjects.childNodes instead; why make > a new large array when one exists already. The way it is now it should > never work very well. > >> 99% fine. > > What happens to the remaining 1%? (just kidding). > > Domenico > > > --- In [email protected], Guy Morton <[EMAIL PROTECTED]> wrote: >> >> getElementsByTagName is unreliable in IE/ASV. You haven't given a lot >> of details but I suspect this is your problem. we had similar >> problems and wrote a replacement function and the problem went away. >> >> Guy >> >> >> On 25/04/2007, at 9:26 PM, krugerboy1971 wrote: >> >>> I am trying to load some external GML map data into an SVG document >>> - and it is working >>> 99% fine. >>> >>> 1. It works perfectly in Firefox >>> 2. It works in ASV - but I get intermittent error messages ('Object >>> required') when calling >>> the function sometimes. On some occasions, It'll load the same GML >>> data just fine. >>> >>> It seems that, at some stage during the loop for svg polygon >>> creation, ASV can't read the >>> GML elements which have been loaded into the 'xmlobjects' <g> >>> element. >>> >>> My code is below - anyone had anything similar happen? or any ideas >>> why ASV is behaving >>> so erratically? >>> >>> function addGeom(node) { >>> clearXMLCache();//function to clear temporary area for GML loaded >>> svgDoc.getElementById('xmlobjects'.appendChild(node)//puts new GML >>> content in >>> temporary area >>> clearMapCache();//function clears out previous map geometry for the >>> SVG >>> pathBuilder();//function to convert GML data into SVG syntax >>> } >>> >>> //MAIN function >>> function pathBuilder() { >>> var myData = svgDoc.getElementById('xmlobjects'); >>> var TargetLayer = svgDoc.getElementById('gmlcontent'); >>> >>> var aID = new Array(); >>> var aPaths = new Array(); >>> var myTile = >>> myData.getElementsByTagNameNS(gmlNS,"featureMember"); >>> var myBBox = myData.getElementsByTagNameNS(gmlNS,"Box").item(0); >>> var myBBoxData = myBBox.getElementsByTagNameNS >>> (gmlNS,"coordinates").item(0).firstChild.data; >>> var a = myBBoxData.split(","); >>> var b = a[1].split(" "); >>> var newX = a[0]; >>> var newWidth=b[1]-a[0]; >>> var newHeight=a[2]-b[0]; >>> var tempy = parseInt(b[0])+parseInt(newHeight); >>> var newY =-tempy; >>> var newViewbox = newX+' '+newY+' '+newWidth+' '+newHeight; >>> svgDoc.getElementById('mapwindow').setAttributeNS >>> (null,'viewBox',newViewbox); >>> nFeatures = myTile.length;//number of objects in the map data >>> for (i=0;i<nFeatures;i++) { >>> var myFeature = myTile.item(i); >>> var myPathData = 'M';//starts a path element for a map >>> feature >>> var myCode = myFeature.getElementsByTagNameNS("http:// >>> www.esri.com/WFS",'RESIDENCE').item(0).firstChild.data; >>> var myPolygons = myFeature.getElementsByTagNameNS >>> (gmlNS,'coordinates'); >>> //inner loop to deal with multi-polygons and >>> donuts - adds a >>> 'moveto' command >>> for (j=0;j<myPolygons.length;j++) { >>> var myCoords = >>> myPolygons.item(j).textContent; >>> if (myCoords ==null) { >>> myCoords = >>> myPolygons.item(j).firstChild.data; >>> } //End of if >>> if (j>0) { >>> myPathData = myPathData+' >>> M'+myCoords; >>> } else { >>> myPathData = >>> myPathData+myCoords; >>> } //end of if >>> } //End of inner for loop >>> //close path and update path array >>> myPathData = myPathData+'Z'; >>> aID[i] = myCode; >>> aPaths[i] = myPathData; >>> } //end of outer for loop >>> var newGroup = svgDoc.createElementNS('http://www.w3.org/2000/ >>> svg',"g"); >>> newGroup.setAttributeNS(null,'id','polygongroup'); >>> TargetLayer.appendChild(newGroup); >>> var PathTargetLayer = svgDoc.getElementById('polygongroup'); >>> for (k=0;k<nFeatures;k++) { >>> //CREATE PATH ELEMENT AND APPEND TO DOCUMENT >>> var newPath = >>> svgDoc.createElementNS('http://www.w3.org/2000/ >>> svg',"path"); >>> newPath.setAttributeNS(null,'d',aPaths[k]); >>> newPath.setAttributeNS(null,'id','GML_'+aID[k]); >>> PathTargetLayer.appendChild(newPath); >>> } //End of for loop >>> } //End of function >>> >>> >>> >>> >>> ----- >>> To unsubscribe send a message to: svg-developers- >>> [EMAIL PROTECTED] >>> -or- >>> visit http://groups.yahoo.com/group/svg-developers and click "edit >>> my membership" >>> ---- >>> Yahoo! Groups Links >>> >>> >>> >> > > > > > ----- > To unsubscribe send a message to: svg-developers- > [EMAIL PROTECTED] > -or- > visit http://groups.yahoo.com/group/svg-developers and click "edit > my membership" > ---- > Yahoo! Groups Links > > > ----- To unsubscribe send a message to: [EMAIL PROTECTED] -or- visit http://groups.yahoo.com/group/svg-developers and click "edit my membership" ---- Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/svg-developers/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/svg-developers/join (Yahoo! ID required) <*> To change settings via email: mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/

