[OpenLayers-Dev] Firefox splitting XML nodes with length greater
than 4096
Thorsten Müller
mueller at terrestris.de
Tue May 3 12:48:32 EDT 2011
Hi Andreas,
thanks for your answer and detailed description of different formats
belonging to this issue. We do use UMN Mapserver in the involved
project, so I hope some project time is allocated to build a patch with
new parser pattern due to OpenLayers.Format.WMSGetFeatureInfo :-)
Best,
Thorsten
Am 03.05.2011 10:04, schrieb Andreas Hocevar:
> Hey Thorsten,
>
> the issue with the WMSGetFeatureInfo format needs to be addressed -
> this is one of the formats that don't use our new sequential parser
> based on OpenLayers.Format.XML yet. Also note that the parser built
> into OpenLayers.Format.WMSGetFeatureInfo will only be used for some
> WMS services (e.g. Mapserver). For others, like GeoServer, there is a
> fallback to the plain GML parser.
>
> Which brings us to your next concern, OpenLayers.Format.GML. This is
> deprecated, and your build should not include OpenLayers.Format.GML,
> but OpenLayers.Format.GML.{v2|v3}. In this case, there won't be a
> problem with node content exceeding 4096 bytes - this has been fixed
> since http://trac.osgeo.org/openlayers/changeset/4410.
>
> To summarize: If you use GeoServer and don't include
> OpenLayers.Format.GML in your build, you won't run into any issues. If
> you use GetFeatureInfo with other WMS servers, there will be an issue
> with the WMSGetFeatureInfo format, and patches for the parser built
> into OpenLayers.Format.WMSGetFeatureInfo to switch it to our new
> parser pattern would be welcome.
>
> Andreas.
>
> On Fri, Apr 29, 2011 at 12:26 PM, Thorsten Müller<mueller at terrestris.de> wrote:
>> Dear list,
>>
>> unfortunately Firefox splits xml nodes with a length greater than 4096 Bytes
>> into several nodes. Due to that some format readers of OpenLayers run into
>> problems.
>>
>> Let's take a look at WMSGetFeatureInfo-Format reader
>> (OpenLayers/lib/OpenLayers/Format/WMSGetFeatureInfo.js) especially at this
>> part of parseAttributes-function:
>>
>> if (child.nodeType == 1) {
>> var grandchildren = child.childNodes;
>> if (grandchildren.length == 1) {
>> var grandchild = grandchildren[0];
>> if (grandchild.nodeType == 3 ||
>> grandchild.nodeType == 4) {
>> var name = (child.prefix) ?
>> child.nodeName.split(":")[1] :
>> child.nodeName;
>> var value = grandchild.nodeValue.replace(
>> this.regExes.trimSpace, "");
>> attributes[name] = value;
>> }
>> }
>> }
>>
>> Here in Firefox with a node value length greater than 4096 there will be
>> more than one grandchildren and the whole attribute will be skipped. This
>> behaviour is to be found in several other format reader like
>> parseAttributes-function in OpenLayers/lib/OpenLayers/Format/GML.js.
>>
>> One possible first workaround for that may be adding functionality to merge
>> nodeValues of all following grandchildren i.e.:
>>
>> if (grandchildren.length> 1) {
>> var m = grandchildren.length;
>> var combinedText = '';
>> for (var j = 0; j< m; ++j) {
>> var oneGrandchild = grandchildren[j];
>> if (oneGrandchild.nodeType == 3 ||
>> oneGrandchild.nodeType == 4) {
>> combinedText +=
>> oneGrandchild.nodeValue.replace(this.regExes.trimSpace, "");
>> }
>> }
>> attributes[name] = combinedText;
>> }
>>
>>
>> Is this a known problem with format readers in combination with firefox and
>> node values with a length greater than 4096? Are there any existing plans to
>> solve this problem or even ideas for that?
>>
>> Any comments appreciated!
>>
>> Best,
>>
>> Thorsten
>>
>> --
>>
>> Diplom-Informatiker Thorsten Müller
>> -Information Technology Consultant-
>>
>> terrestris GmbH& Co. KG
>> Irmintrudisstraße 17
>> 53111 Bonn
>>
>> Tel: ++49 (0)228 / 96 28 99 -52
>> Fax: ++49 (0)228 / 96 28 99 -57
>>
>> Email: mueller at terrestris.de
>> Web: http://www.terrestris.de
>>
>> Amtsgericht Bonn, HRA 6835
>> Komplementärin: terrestris Verwaltungs GmbH
>> vertreten durch: Hinrich Paulsen, Till Adams
>>
>>
>> _______________________________________________
>> Dev mailing list
>> Dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/openlayers-dev
>>
>>
>
>
--
Diplom-Informatiker Thorsten Müller
-Information Technology Consultant-
terrestris GmbH& Co. KG
Irmintrudisstraße 17
53111 Bonn
Tel: ++49 (0)228 / 96 28 99 -52
Fax: ++49 (0)228 / 96 28 99 -57
Email: mueller at terrestris.de
Web: http://www.terrestris.de
Amtsgericht Bonn, HRA 6835
Komplementärin: terrestris Verwaltungs GmbH
vertreten durch: Hinrich Paulsen, Till Adams
More information about the Dev
mailing list