XQuery: получить только один элемент XML среди множества с таким же именем

Я использую этот URL, чтобы получить информацию о данном местоположении (с широтой / долготой):

http://maps.googleapis.com/maps/api/geocode/xml?latlng=48.845909,2.341762&sensor=true

То, что я хочу сделать, это получить основной адрес этого места (адрес, город). Итак, я попробовал этот запрос XQuery:

let $lat := 48.845909,
$lng := 2.341762,
$url := concat('http://maps.googleapis.com/maps/api/geocode/xml?latlng=',$lat,',',$lng,'&sensor=true'),
$resp := doc($url)
return $resp//result/formatted_address/string()

Но с этим я получаю все элементы formatted_address результата XML, поэтому здесь я получаю:

12 Rue Royer-Collard, 75005 Paris, France
Val-de-Grâce, Paris, France
75005 Paris, France
5th arrondissement of Paris, Paris, France
Paris, France
Paris, France
Île-de-France, France
France

И я хочу только первую строчку. Что я должен делать?

1 ответ

Решение

Просто используйте [1], чтобы получить первый элемент.:

let $lat := 48.845909,
$lng := 2.341762,
$url := concat('http://maps.googleapis.com/maps/api/geocode/xml?latlng=',$lat,',',$lng,'&sensor=true'),
$resp := doc($url)
return ($resp//result/formatted_address/string())[1]

Или переместите его к первому результату (возможно, быстрее):

let $lat := 48.845909,
$lng := 2.341762,
$url := concat('http://maps.googleapis.com/maps/api/geocode/xml?latlng=',$lat,',',$lng,'&sensor=true'),
$resp := doc($url)
return $resp//result[1]/formatted_address/string()
Другие вопросы по тегам