3

I need to parse an XML response from a web service using JQuery

http://code.jquery.com/jquery-1.11.0.min.js

Here you are a sample of my XML

<?xml version='1.0' encoding="ISO-8859-1" ?>
<wfs:FeatureCollection
   xmlns:ms="http://mapserver.gis.umn.edu/mapserver"
   xmlns:wfs="http://www.opengis.net/wfs"
   xmlns:gml="http://www.opengis.net/gml"
   xmlns:ogc="http://www.opengis.net/ogc"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd 
                       http://mapserver.gis.umn.edu/mapserver http://wms.pcn.minambiente.it/ogc?map=/ms_ogc/wfs/Numeri_Civici_2012.map&amp;SERVICE=WFS&amp;VERSION=1.0.0&amp;REQUEST=DescribeFeatureType&amp;TYPENAME=IN.NUMERICIVICI.2012&amp;OUTPUTFORMAT=XMLSCHEMA">
      <gml:boundedBy>
        <gml:Box srsName="EPSG:4326">
            <gml:coordinates>7.700007,44.802147 7.749396,44.849996</gml:coordinates>
        </gml:Box>
      </gml:boundedBy>
    <gml:featureMember>
      <ms:IN.NUMERICIVICI.2012 fid="IN.NUMERICIVICI.2012.2728384">

        <gml:boundedBy>
            <gml:Box srsName="EPSG:4326">
                <gml:coordinates>7.735138,44.810267 7.735138,44.810267</gml:coordinates>
            </gml:Box>
        </gml:boundedBy>
        <ms:boundary>
        <gml:Point srsName="EPSG:4326">
          <gml:coordinates>7.735138,44.810267</gml:coordinates>

        </gml:Point>
        </ms:boundary>
        <ms:id>13800026457291</ms:id>
        <ms:nome>Borgata Tetti Sotto</ms:nome>
        <ms:civico>16</ms:civico>
        <ms:istat>01004041</ms:istat>
        <ms:cap>12030</ms:cap>

        <ms:comune>CARAMAGNA PIEMONTE</ms:comune>
        <ms:nome_ted> </ms:nome_ted>
        <ms:provincia>CUNEO</ms:provincia>
        <ms:regione>PIEMONTE</ms:regione>
      </ms:IN.NUMERICIVICI.2012>
    </gml:featureMember>
    <gml:featureMember>

      <ms:IN.NUMERICIVICI.2012 fid="IN.NUMERICIVICI.2012.2736621">
        <gml:boundedBy>
            <gml:Box srsName="EPSG:4326">
                <gml:coordinates>7.735397,44.812403 7.735397,44.812403</gml:coordinates>
            </gml:Box>
        </gml:boundedBy>
        <ms:boundary>
        <gml:Point srsName="EPSG:4326">

          <gml:coordinates>7.735397,44.812403</gml:coordinates>
        </gml:Point>
        </ms:boundary>
        <ms:id>13800026457290</ms:id>
        <ms:nome>Borgata Tetti Sotto</ms:nome>
        <ms:civico>25</ms:civico>
        <ms:istat>01004041</ms:istat>

        <ms:cap>12030</ms:cap>
        <ms:comune>CARAMAGNA PIEMONTE</ms:comune>
        <ms:nome_ted> </ms:nome_ted>
        <ms:provincia>CUNEO</ms:provincia>
        <ms:regione>PIEMONTE</ms:regione>
      </ms:IN.NUMERICIVICI.2012>

    </gml:featureMember>

I have to extract in some js variables these fields:

  • ms:nome
  • ms:civico
  • ms:istat
  • ms:cap
  • ms:comune

I need also to be sure that my code works right on IE, Firefox and Chrome.

I've seen and tried several solutions that I've found here in SO but none work.

Any suggestion is very appreciated!

Thank you very much in advance!!

Cesare

2 Answers 2

2

The right solution is shown as answer at this question

Parse xml with namespaces using JQuery and working for all browser ..

It works on IE, FF and Chrome now!

I hope this could be useful for others.

Cesare

Sign up to request clarification or add additional context in comments.

Comments

0

You can iterate through the XML elements using jQuery and find(), just like with HTML. When specifying tag names to select, you need to omit the namespace prefix in the selector.

var xmlText = $('#featureData').text(),
    $xmlData = $.parseXML(xmlText),
    $features = $('featureMember', $xmlData),
    extractedFeatures = [];

$features.each(function () {
    var $this = $(this),
        feature = {},
        items = [
            'nome',
            'civico',
            'istat',
            'cap',
            'comune'
        ],
        item;

    for (var i = 0; i < items.length; i++) {
        item = items[i];
        feature[item] = $this.find(item).text();
    }

    extractedFeatures.push(feature);
});

$('#output').text(JSON.stringify(extractedFeatures));

See the jsFiddle reproduction here

1 Comment

Hi! I've tried bu it seems working only in Chrome, not in Firefox and not in IE. Could be possible to put values not ina json structure but in some seperate javascript variables / array of values? I'm a newbye in JQuery, so sorry for the syupid question ... :-)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.