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/
 

Reply via email to