Можно ли ВЫБРАТЬ только значение атрибута из XML или RSS, используя YQL? - PullRequest
1 голос
/ 03 марта 2012

У меня есть несколько YQL запросов из XML и RSS, которые возвращают больше, чем я хочу SELECT. Я получаю весь XML от itemPath до значения атрибута, которое я затем должен просеять, чтобы найти только те значения, которые я хочу:

Этот запрос:

SELECT current_conditions.temp_c.data FROM xml
    WHERE url="http://www.google.com/ig/api?weather=Tbilisi"
    AND itemPath="//weather"

возвращает все это:

    <results>
        <weather>
            <current_conditions>
                <temp_c data="-7"/>
            </current_conditions>
        </weather>
    </results>

но все, что мне нужно, это:

    <results>-7</results>

и этот запрос:

SELECT condition.temp FROM rss
    WHERE url="http://weather.yahooapis.com/forecastrss?w=1965878&u=c"

возвращает все это:

    <results>
        <item>
            <yweather:condition
                xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" temp="1"/>
        </item>
    </results>

тогда как я хочу вот что:

    <results>1</results>

Есть ли способ получить более краткие результаты, подобные этим, при выборе атрибутов XML с YQL, поэтому мне не нужно больше разбирать результат в моем коде?

Один случай использования - это когда я хочу запросить несколько источников в одном запросе, используя yql.query.multi. Я не получаю красивую аккуратную «строку», когда мне возвращается весь этот окружающий XML.

Ответы [ 2 ]

1 голос
/ 03 марта 2012

Что это дает вам?

SELECT current_conditions.temp_c.data FROM xml
  WHERE url="http://www.google.com/ig/api?weather=Tbilisi"
  AND itemPath="//weather/current_conditions/temp_c/@data"
0 голосов
/ 09 февраля 2015

Вам необходимо использовать анализатор HTML5. Использование ответа @Murry McDonald и его небольшое изменение должно работать для вас.

SELECT current_conditions.temp_c.data FROM xml
  WHERE url="http://www.google.com/ig/api?weather=Tbilisi"
  AND itemPath="//weather/current_conditions/temp_c/@data" AND compact="html"
...