парсинг XML-данных из API Google - PullRequest
2 голосов
/ 01 апреля 2010

У меня есть ссылка на карту Google, которая возвращает мне XML. Я хочу значения конкретного тега из этого XML. Кто-нибудь может подсказать мне, как я это сделаю. Ссылка:

http://maps.google.com/maps/api/geocode/xml?address=1270 Broadway Ste 803, New York, NY 10001, USA&sensor=false

Ответы [ 4 ]

4 голосов
/ 20 мая 2010

Вот функция, которая будет возвращать координаты в словаре. Примечание: это с новым API V3. Ключ API не требуется. датчик есть.

    // Figure out the geocoordinates for the location
private Dictionary<string, string> GeoCode(string location)
{
    // Initialize the dictionary with empty values.
    Dictionary<string, string> dic = new Dictionary<string, string>();
    dic.Add("latitude", "");
    dic.Add("longitude", "");

    try
    {
        string url = "http://maps.google.com/maps/api/geocode/xml?address=" + System.Web.HttpUtility.UrlEncode(location) + "&sensor=false";
        XmlDocument doc = new XmlDocument();
        doc.Load(url);
        XmlNodeList nodes = doc.SelectNodes("//location");

        // We're assuming there's only one location node in the xml.
        foreach (XmlNode node in nodes)
        {
            dic["latitude"] = node.SelectSingleNode("lat").InnerText;
            dic["longitude"] = node.SelectSingleNode("lng").InnerText;
        }
    }
    catch (Exception)
    {
        // If anything goes wrong, we want to get empty values back.
        dic["latitude"] = "";
        dic["longitude"] = "";
    }

    return dic;
}
1 голос
/ 01 апреля 2010

зависит от того, какой язык вы хотите использовать. если вы разрабатываете с Python, вы можете использовать Python minidom parser .

Пример того, как это можно проанализировать в python:

>>> import urllib
>>> from xml.dom import minidom
>>> URL="http://maps.google.com/maps/api/geocode/xml?address=1270%20Broadway%20Ste%20803,%20New%20York,%20NY%2010001,%20USA&sensor=false"
>>> loc = dom.getElementsByTagName('location')[0]
>>> lat = loc.getElementsByTagName('lat')[0].firstChild.data
>>> lng = loc.getElementsByTagName('lng')[0].firstChild.data
>>> print lat, lng
40.7486930 -73.9877870
>>> 
0 голосов
/ 30 сентября 2013

как насчет использования службы json, а не для анализа любого xml?попробуйте это , чтобы понять, о чем я.

0 голосов
/ 01 апреля 2010

, если вы используете * nix и хотите видеть значения определенных тегов, независимо от того, где они находятся в иерархии,

$ s="http://maps.google.com/maps/api/geocode/xml?address=1270 Broadway Ste 803, New York, NY 10001, USA&sensor=false"
$ wget -O- -q "$s" | awk '/<lat>|<lng>/' # getting </lat> tags and <lng> tags
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...