V
V
Vanes Ri_Lax2017-06-22 10:42:48
Java
Vanes Ri_Lax, 2017-06-22 10:42:48

What is the correct way to get data from XML?

Hello,
I am writing a program in Java, I need to get coordinates from an address. For this I use a geocoder from Yandex.
I am making a request at:

https://geocode-maps.yandex.ru/1.x/?geocode=460048,%20Россия,%20Оренбургская%20область,%20г.%20Оренбург,%20ул.Монтажников,%2018

In response, I receive in the form of XML:
<?xml version="1.0" encoding="utf-8"?>
<ymaps xmlns="http://maps.yandex.ru/ymaps/1.x" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="     http://maps.yandex.ru/business/1.x http://maps.yandex.ru/schemas/business/1.x/business.xsd     http://maps.yandex.ru/geocoder/1.x http://maps.yandex.ru/schemas/geocoder/1.x/geocoder.xsd     http://maps.yandex.ru/psearch/1.x http://maps.yandex.ru/schemas/psearch/1.x/psearch.xsd     http://maps.yandex.ru/search/1.x http://maps.yandex.ru/schemas/search/1.x/search.xsd     http://maps.yandex.ru/web/1.x http://maps.yandex.ru/schemas/web/1.x/web.xsd     http://maps.yandex.ru/search/internal/1.x http://maps.yandex.ru/schemas/search/internal/1.x/internal.xsd">
  <GeoObjectCollection>
    <metaDataProperty xmlns="http://www.opengis.net/gml">
      <GeocoderResponseMetaData xmlns="http://maps.yandex.ru/geocoder/1.x">
        <request>460048, Россия, Оренбургская область, г. Оренбург, ул.Монтажников, 18</request>
        <found>1</found>
        <results>10</results>
      </GeocoderResponseMetaData>
    </metaDataProperty>
    <featureMember xmlns="http://www.opengis.net/gml">
      <GeoObject xmlns="http://maps.yandex.ru/ymaps/1.x" xmlns:gml="http://www.opengis.net/gml" gml:id="1">
        <metaDataProperty xmlns="http://www.opengis.net/gml">
          <GeocoderMetaData xmlns="http://maps.yandex.ru/geocoder/1.x">
            <kind>house</kind>
            <text>Россия, Оренбург, улица Монтажников, 18</text>
            <precision>exact</precision>
            <Address xmlns="http://maps.yandex.ru/address/1.x">
              <country_code>RU</country_code>
              <formatted>Оренбург, улица Монтажников, 18</formatted>
              <Component>
                <kind>country</kind>
                <name>Россия</name>
              </Component>
              <Component>
                <kind>province</kind>
                <name>Приволжский федеральный округ</name>
              </Component>
              <Component>
                <kind>province</kind>
                <name>Оренбургская область</name>
              </Component>
              <Component>
                <kind>area</kind>
                <name>городской округ Оренбург</name>
              </Component>
              <Component>
                <kind>locality</kind>
                <name>Оренбург</name>
              </Component>
              <Component>
                <kind>street</kind>
                <name>улица Монтажников</name>
              </Component>
              <Component>
                <kind>house</kind>
                <name>18</name>
              </Component>
            </Address>
            <AddressDetails xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
              <Country>
                <AddressLine>Оренбург, улица Монтажников, 18</AddressLine>
                <CountryNameCode>RU</CountryNameCode>
                <CountryName>Россия</CountryName>
                <AdministrativeArea>
                  <AdministrativeAreaName>Оренбургская область</AdministrativeAreaName>
                  <SubAdministrativeArea>
                    <SubAdministrativeAreaName>городской округ Оренбург</SubAdministrativeAreaName>
                    <Locality>
                      <LocalityName>Оренбург</LocalityName>
                      <Thoroughfare>
                        <ThoroughfareName>улица Монтажников</ThoroughfareName>
                        <Premise>
                          <PremiseNumber>18</PremiseNumber>
                        </Premise>
                      </Thoroughfare>
                    </Locality>
                  </SubAdministrativeArea>
                </AdministrativeArea>
              </Country>
            </AddressDetails>
          </GeocoderMetaData>
        </metaDataProperty>
        <description xmlns="http://www.opengis.net/gml">Оренбург, Россия</description>
        <name xmlns="http://www.opengis.net/gml">улица Монтажников, 18</name>
        <boundedBy xmlns="http://www.opengis.net/gml">
          <Envelope>
            <lowerCorner>55.143272 51.798303</lowerCorner>
            <upperCorner>55.151483 51.803393</upperCorner>
          </Envelope>
        </boundedBy>
        <Point xmlns="http://www.opengis.net/gml">
          <pos>55.147378 51.800848</pos>
        </Point>
      </GeoObject>
    </featureMember>
  </GeoObjectCollection>
</ymaps>

For parsing, I use an example here: blog.eqlbin.ru/2011/03/jdom-xml-java.html
But there are few nestings in the example, and there are a lot of them in the Yandex response.
How can I quickly access the value
GeoObjectCollection -> metaDataProperty -> GeocoderResponseMetaData -> results

Thank you very much in advance!

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question