IE, Safari, and Firefox all deal with XML elements with namespaces in different

ways. I can't even make thigns work in *two* browsers at once -- what a pain.
So, we'll wrap up all the browser-specific stuff in 
OpenLayers.Ajax.getElementsByTagNameNS(), which contains the browser funkies,
and as a benefit, we get working WFS in IE.


git-svn-id: http://svn.openlayers.org/trunk/openlayers@1650 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2006-10-06 15:33:33 +00:00
parent 95ec8bdc82
commit 5280553306
4 changed files with 10 additions and 4 deletions

View File

@@ -300,3 +300,8 @@ OpenLayers.Ajax.Request.prototype = OpenLayers.Util.extend(new OpenLayers.Ajax.B
}
});
OpenLayers.Ajax.getElementsByTagNameNS = function(parentnode, nsuri, nsprefix, tagname) {
return parentnode.getElementsByTagNameNS ?
parentnode.getElementsByTagNameNS(nsuri, tagname)
: parentnode.getElementsByTagName(nsprefix + ':' + tagname);
}

View File

@@ -47,8 +47,8 @@ OpenLayers.Feature.WFS.prototype =
processXMLNode: function(xmlNode) {
//this should be overridden by subclasses
// must return an Object with 'id' and 'lonlat' values set
var point = xmlNode.getElementsByTagName("Point");
var text = OpenLayers.Util.getXmlNodeValue(point[0].getElementsByTagName("coordinates")[0]);
var point = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, "http://www.opengis.net/gml", "gml", "Point");
var text = OpenLayers.Util.getXmlNodeValue(OpenLayers.Ajax.getElementsByTagNameNS(point[0], "http://www.opengis.net/gml","gml", "coordinates")[0]);
var floats = text.split(",");
return {lonlat: new OpenLayers.LonLat(parseFloat(floats[0]),
parseFloat(floats[1])),

View File

@@ -101,8 +101,7 @@ OpenLayers.Tile.WFS.prototype =
doc = OpenLayers.parseXMLString(request.responseText);
}
var resultFeatures = doc.getElementsByTagName("featureMember");
var resultFeatures = OpenLayers.Ajax.getElementsByTagNameNS(doc, "http://www.opengis.net/gml","gml", "featureMember");
this.addResults(resultFeatures);
},

View File

@@ -482,6 +482,8 @@ OpenLayers.Util.getXmlNodeValue = function(node) {
val = node.text;
if (!val)
val = node.textContent;
if (!val)
val = node.firstChild.nodeValue;
},
function() {
val = node.textContent;