1

我有一些YQL来自 XML 和 RSS 的查询返回的比我想要的要多SELECT。我从itemPath属性值获取所有 XML,然后我必须对其进行筛选以挖掘出我想要的值:

这个查询:

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>

使用 YQL 选择 XML 属性时,有没有办法获得更简洁的结果,这样我就不必在代码中进一步解析结果?

一个用例是当我想在一个查询中使用yql.query.multi. 当所有这些周围的 XML 都返回给我时,我没有得到一个漂亮整洁的“行”。

4

2 回答 2

1

这给了你什么?

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"
于 2012-03-03T18:17:54.180 回答
0

您需要使用 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"
于 2015-02-09T13:38:13.577 回答