1

YQLXMLと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>

YQLでXML属性を選択するときに、このようなより簡潔な結果を取得して、コードで結果をさらに解析する必要がないようにする方法はありますか?

1つのユースケースは、を使用して1つのクエリ内で複数のソースをクエリする場合です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 に答える