[OpenLayers-Users] XML Parsing via OpenLayers?

Bart van den Eijnden (OSGIS) bartvde at osgis.nl
Tue Oct 7 13:54:45 EDT 2008


Maybe you can try and create your own Format class, something like:

/**
 * @requires OpenLayers/Format/XML.js
 *
 */
OpenLayers.Format.MyFormat = OpenLayers.Class(
    OpenLayers.Format.XML, {
   
    initialize: function(options) {
        OpenLayers.Format.XML.prototype.initialize.apply(this, [options]);
        this.options = options;
    },

    read: function(data) {
        if(typeof data == "string") {
            data = OpenLayers.Format.XML.prototype.read.apply(this, [data]);
        }
        // do your stuff here, it's just an example
        var root = data.documentElement;
        var children = root.childNodes;
        for(var i = 0; i < children.length; ++i) {
            childNode = children[i];
            var nodeName = childNode.nodeName;
            if (nodeName == 'Toolbar') {
              this.parseToolbar(childNode);
            }
        }
        // return your array here
    },
   
    CLASS_NAME: "OpenLayers.Format.MyFormat"

});


And then:

         OpenLayers.loadURL(myURL, "", null, function(response) {
             var format = new OpenLayers.Format.MyFormat();
             var myArray = format.read(response.responseXML || 
response.responseText);
             console.log(myArray);
         });

Best regards,
Bart

Maps-R-us wrote:
> Thank you Bart,
>
> I actually do this in my loadSuccess function:
>
>         function loadSuccess(request) {
>
>             updateStatus("loaded");
>             if(!request.responseXML.documentElement) {
>                 doc = format.read(request.responseText);
>             } else {
>                 doc = request.responseXML;
>             }
>         }
>
> Is this correct?
>
> M
>
> Bart van den Eijnden wrote:
>   
>> You need to parse the XML in the loadSuccess function, check 
>> examples/GMLParser.html for an example.
>>
>> Best regards,
>> Bart
>>
>> Maps-R-us wrote:
>>     
>>> Hi there,
>>>
>>> I would like to retrieve elements in an xml file based on tag name and
>>> populate an array.  Here is a sample of the XML:
>>>
>>> <users>
>>>   <user>
>>>   <fullname>Test</fullname>
>>>   <ID>3400</ID>
>>>   <lat>0.003926753994724706</lat>
>>>   <lon>0.00446319580078125</lon>
>>>  
>>> <image>http://40.media.vimeo.com/d1/5/35/85/81/portrait-35858134.jpg</image>
>>>   <floor>3</floor>
>>>   </user>
>>> </users>
>>>
>>> My code fails on the getElementsByNameNS()
>>>
>>>
>>> var format = new OpenLayers.Format.XML();
>>> var doc = null;
>>> var url = "officedata.xml";
>>> OpenLayers.loadURL(url, null, null, loadSuccess, loadFailure);
>>> var attributeValue = [];
>>> var attributeValue[1] = format.getElementsByTagNameNS(doc,
>>> '*','fullname');
>>> alert (attributeValue[1]);
>>>
>>> Any ideas?
>>>
>>> Thank you in advance,
>>>
>>> M
>>>
>>>   
>>>       
>> -- 
>> Bart van den Eijnden
>> OSGIS, Open Source GIS
>> bartvde at osgis.nl
>> http://www.osgis.nl
>>
>> _______________________________________________
>> Users mailing list
>> Users at openlayers.org
>> http://openlayers.org/mailman/listinfo/users
>>
>>
>>     
>
>   


-- 
Bart van den Eijnden
OSGIS, Open Source GIS
bartvde at osgis.nl
http://www.osgis.nl




More information about the Users mailing list