Question

Trying to find an XML file I can use in lieu of a look-up database table until we get our web hosting switched over to the right DB.

Can anyone refer me to an XML file with elements whose children have zipcodes, states, and cities? E.g.:

<zip code="98117">
    <state>WA</state>
    <city>Seattle</state>
</zip>

Or

<entry>
    <zip>98117</zip>
    <state>WA</state>
    <city>Seattle</city>
</entry>

I'll be using LINQ in C# to query this data.

Was it helpful?

Solution

Check out this one, it provides several different free ones.

https://stackoverflow.com/questions/24471/zip-code-database

OTHER TIPS

There is a free zip code database located at:

http://www.populardata.com

I believe its a .CSV file but you could convert it to a XML file quite easily.

Here is code to do city.state autofill based on a zipcode entered.

<script type="text/javascript">//<![CDATA[
$(function() {
    // IMPORTANT: Fill in your client key
    var clientKey = "js-9qZHzu2Flc59Eq5rx10JdKERovBlJp3TQ3ApyC4TOa3tA8U7aVRnFwf41RpLgtE7";

    var cache = {};
    var container = $("#example1");
    var errorDiv = container.find("div.text-error");

    /** Handle successful response */
    function handleResp(data)
    {
        // Check for error
        if (data.error_msg)
            errorDiv.text(data.error_msg);
        else if ("city" in data)
        {
            // Set city and state
            container.find("input[name='city']").val(data.city);
            container.find("input[name='state']").val(data.state);
        }
    }

    // Set up event handlers
    container.find("input[name='zipcode']").on("keyup change", function() {
        // Get zip code
        var zipcode = $(this).val().substring(0, 5);
        if (zipcode.length == 5 && /^[0-9]+$/.test(zipcode))
        {
            // Clear error
            errorDiv.empty();

            // Check cache
            if (zipcode in cache)
            {
                handleResp(cache[zipcode]);
            }
            else
            {
                // Build url
                var url = "http://www.zipcodeapi.com/rest/"+clientKey+"/info.json/" + zipcode + "/radians";

                // Make AJAX request
                $.ajax({
                    "url": url,
                    "dataType": "json"
                }).done(function(data) {
                    handleResp(data);

                    // Store in cache
                    cache[zipcode] = data;
                }).fail(function(data) {
                    if (data.responseText && (json = $.parseJSON(data.responseText)))
                    {
                        // Store in cache
                        cache[zipcode] = json;

                        // Check for error
                        if (json.error_msg)
                            errorDiv.text(json.error_msg);
                    }
                    else
                        errorDiv.text('Request failed.');
                });
            }
        }
    }).trigger("change");
});

//]]>

Here is the API - http://www.zipcodeapi.com/Examples#example1.

You can request the content in XML via To get the data back directly in XML you can use .xml in the format in the request.

https://www.zipcodeapi.com/rest/RbdapNcxbjoCvfCv4N5iwB3L4beZg017bfiB2u9eOxQkMtQQgV9NxdyCoNCENDMZ/info.xml/90210/degrees

Will respond with

<response>
   <zip_code>90210</zip_code>
   <lat>34.100501</lat>
   <lng>-118.414908</lng>
   <city>Beverly Hills</city>
   <state>CA</state>
   <timezone>
   <timezone_identifier>America/Los_Angeles</timezone_identifier>
   <timezone_abbr>PDT</timezone_abbr>
      <utc_offset_sec>-25200</utc_offset_sec>
      <is_dst>T</is_dst>
   </timezone>
   <acceptable_city_names/>
</response>

Api docs are at https://www.zipcodeapi.com/API

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top