Клуб API Карт

Python и YMapsML

Пост в архиве.

Привет :)

Может кто знает, есть ли уже библиотеки на питоне для работы и парсинга YMapsML ? В частности ответов от геокодера.

Стандартный xml.dom.minidom.parse ругается :

ExpatError: unbound prefix: line 2, column 0
Ищу чем лучше и правильней парсить на питоне такой xml.
10 комментариев
Там действительно невалидный ymapsml. Удалите все префиксы в тегах (ymaps:, gml: и др.), должно заработать.
Саша, поправишь пример?
Удалённый пользователь
28 января 2016, 07:05
вот такой документ у меня валидно прочитался:


   
    http://maps.yandex.ru/ymaps/1.x"
     xmlns:gml="http://www.opengis.net/gml"
     xmlns:repr="http://maps.yandex.ru/representation/1.x"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:ygeo="http://maps.yandex.ru/geocoder/1.x"
     xmlns:xal="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"
     xsi:schemaLocation="http://maps.yandex.ru/schemas/ymaps/1.x/ymaps.xsd">
     
        http://www.opengis.net/gml">
         
            Москва, Тверская улица, дом 7
            8
         
       
        http://www.opengis.net/gml">
          http://maps.yandex.ru/ymaps/1.x">
            http://www.opengis.net/gml">
              http://maps.yandex.ru/geocoder/1.x">
                house
                Россия, Москва, улица Тверская, 7
                exact
               
                 
                    Россия
                   
                      Москва
                     
                        улица Тверская
                       
                          7
                       
                     
                   
                 
               
             
           
            http://www.opengis.net/gml">
             
                37.603361 55.755155
                37.619818 55.761345
             
           
            http://www.opengis.net/gml">
              37.611590 55.758250
           
         
       
     
   


то есть когда все определения префиксов явно вынес в заголовок.
Еще GeoObjectCollection открывался без префикса, а закрывался с ним, это тоже пришлось подправить
Можно взять файлы из примеров.
http://api.yandex.ru/maps/ymapsml/examples/

Найдёте - напишите результат не забудьте им поделиться. У меня в дальнейших планах тоже разбор ответов геокодера.

Парсить любой библиотекой с которой вам понравиться работать.
Удалённый пользователь
28 января 2016, 07:05
Обязательно :)
Удалённый пользователь
28 января 2016, 07:05
http://paste2.org/p/995340 как то так
Жесть.
А столько кода реально нужно?
Будут ли востребованны все созданные функции?




Удалённый пользователь
28 января 2016, 07:05
Вообще хотелось сделать что-то совместимое по интерфейсу с геокодерами geopy. Поэтому и класс наследуется от geopy.geocoders.base.Geocoder. Да и кода не так уж и много.
Немного исправил: http://paste2.org/p/996308

А так вообще можно упростить, при желании, конечно. Или если geopy не нужен - тоже.
Обратное геокодирование:
http://paste2.org/p/996421

 
Ищу чем лучше и правильней парсить на питоне такой xml.


Небольшой обзор парсеров
Я использовал Element Tree
Кроме ElementTree названия какие-то незнакомые и дата несколько смущает.

Я по мелочи юзал lxml  и Beautiful Soup