Оказывается, в API погоды Google нет ничего особенного, но в том, как параметр SELECT
взаимодействует с параметром itemPath
в YQL-запросе.
Лично я нахожу документацию по YQL довольно сложной для использования для тех из нас, кто имеет лишь элементарное понимание некоторых технологий, на которые она опирается.
Кажется, что, когда вы SELECT ... FROM rss
, существует подразумеваемое itemPath
, которое указывает на повторяющееся поле item
канала. Но когда вы SELECT ... FROM xml
вам нужно указать itemPath
вручную. Если в вашем XML нет повторяющейся части, это довольно произвольно для того, чтобы вы установили его.
Теперь, когда у вас есть набор itemPath
, вы можете SELECT
определенные поля, используя точечную запись. Обратите внимание, что вы можете указать подполя, которые являются атрибутами XML, используя точечную нотацию SELECT
, но вы не можете указать их, используя косую нотацию в itemPath
, но никакая диагностика не поможет вам найти такую ошибку новичка ...
Мой новый запрос
SELECT current_conditions.temp_c.data FROM xml
WHERE url="http://www.google.com/ig/api?weather=Tbilisi"
AND itemPath="//weather"
Результаты
<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
yahoo:count="1" yahoo:created="2012-03-01T10:22:41Z" yahoo:lang="en-US">
<results>
<weather>
<current_conditions>
<temp_c data="3"/>
</current_conditions>
</weather>
</results>
</query>