[OpenLayers-Commits] r11741 - in trunk/openlayers: lib/OpenLayers/Format tests/Format

commits-20090109 at openlayers.org commits-20090109 at openlayers.org
Tue Mar 29 05:44:12 EDT 2011


Author: bartvde
Date: 2011-03-29 02:44:07 -0700 (Tue, 29 Mar 2011)
New Revision: 11741

Modified:
   trunk/openlayers/lib/OpenLayers/Format/WMSGetFeatureInfo.js
   trunk/openlayers/tests/Format/WMSGetFeatureInfo.html
Log:
Not all ESRI WMSGetFeatureInfo formats parsed, p=me, r=cmoullet,erilem (closes #3177)

Modified: trunk/openlayers/lib/OpenLayers/Format/WMSGetFeatureInfo.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Format/WMSGetFeatureInfo.js	2011-03-29 09:43:20 UTC (rev 11740)
+++ trunk/openlayers/lib/OpenLayers/Format/WMSGetFeatureInfo.js	2011-03-29 09:44:07 UTC (rev 11741)
@@ -150,10 +150,25 @@
             var featureNode = featureNodes[i];
             var geom = null;
 
+            // attributes can be actual attributes on the FIELDS tag, 
+            // or FIELD children
             var attributes = {};
-            for(var j=0, jlen=featureNode.attributes.length; j<jlen; j++) {
-                var attribute = featureNode.attributes[j];
-                attributes[attribute.nodeName] = attribute.nodeValue;
+            var j;
+            var jlen = featureNode.attributes.length;
+            if (jlen > 0) {
+                for(j=0; j<jlen; j++) {
+                    var attribute = featureNode.attributes[j];
+                    attributes[attribute.nodeName] = attribute.nodeValue;
+                }
+            } else {
+                var nodes = featureNode.childNodes;
+                for (j=0, jlen=nodes.length; j<jlen; ++j) {
+                    var node = nodes[j];
+                    if (node.nodeType != 3) {
+                        attributes[node.getAttribute("name")] = 
+                            node.getAttribute("value");
+                    }
+                }
             }
 
             response.push(

Modified: trunk/openlayers/tests/Format/WMSGetFeatureInfo.html
===================================================================
--- trunk/openlayers/tests/Format/WMSGetFeatureInfo.html	2011-03-29 09:43:20 UTC (rev 11740)
+++ trunk/openlayers/tests/Format/WMSGetFeatureInfo.html	2011-03-29 09:44:07 UTC (rev 11741)
@@ -4,7 +4,7 @@
     <script type="text/javascript">
     
     function test_read_FeatureInfoResponse(t) {
-        t.plan(5);
+        t.plan(7);
         
         var parser = new OpenLayers.Format.WMSGetFeatureInfo();
 
@@ -49,6 +49,25 @@
         t.eq(features[1].attributes.STATE_NAME, 'Wyoming',
              "Attribute STATE_NAME contains the right value");
 
+        text = '<FeatureInfoResponse>' +
+            '<FIELDS>' +
+            '<FIELD name="ID" value="B31A0154"/>' +
+            '<FIELD name="FID" value="31AL0011"/>' +
+            '</FIELDS>' +
+            '<FIELDS>' +
+            '<FIELD name="ID" value="B31A0153"/>' +
+            '<FIELD name="FID" value="31AL0011"/>' +
+            '</FIELDS>' +
+            '</FeatureInfoResponse>';
+
+        features = parser.read(text);
+
+        t.eq(features.length, 2,
+             "Parsed 2 features in total");
+
+        t.eq(features[1].attributes.FID, '31AL0011',
+             "Attribute FID contains the right value");
+
     }
 
     function test_read_msGMLOutput(t) {



More information about the Commits mailing list