開発者コンソール

XMLでのクエリの実行


XMLでのクエリの実行

レシピの構成では、XMLクエリ構文を使用してqueryパラメーターを作成しました。XMLクエリではXPath式が使用されます。XPath構文の詳細については、XPath Syntax(英語のみ)を参照してください。こちらのXPath Tester/Evaluator(英語のみ)を使用して、XPath式をテストすることもできます。

XPathから結果を取得したら、matchListセレクターを使用してクエリ結果の特定の要素を選択します。matchListセレクターでは、XPath構文ではなくAmazonのカスタム構文を使用して、適切な要素をターゲットにします。matchListセレクターの目的は、Fire App BuilderのUIに適切なアイテムが表示されるように、フィード内の要素をFire App Builderのコンテンツと関連付けることです。

このページでは、さまざまなXPathクエリとmatchListセレクターの例を紹介します。それぞれの例では、まずクエリを使用してフィードの特定の要素をターゲットにします。次にmatchListパラメーターを使用して、クエリの結果から要素を選択します。

matchListパラメーターには、(XPathにあるような)構文を入力して結果を確認できるエバリュエーターはありません。結果を確認する唯一の方法は、Android Studioでアプリをビルドして動作を調べることです。

カテゴリーに対するクエリ

例1: 基本的なXPath構文

この例では、基本的なXPath構文を使用して要素をターゲットにする方法を示します。

次のようなXMLドキュメントがあるとします。

<doc>
     <title>マイカテゴリータイトル</title>
     <p pid="1">マイカテゴリー</p>
     <p>マイカテゴリー</p>
 </doc>

doc/titleというクエリからは、次の結果が返されます。

Element='<title>マイカテゴリータイトル</title>'

doc/p[2]というクエリからは、次の結果が返されます。

Element='<p>マイカテゴリー</p>'

doc/p[@pid="1"]というクエリからは、次の結果が返されます。

Element='<p pid="1">マイカテゴリー</p>'

例2: カテゴリーの取得

この例では、XQuery構文を使用してXMLフィードからカテゴリーとアイテムを取得する方法を示します。

次のような、より複雑なXMLフィードがあるとします。

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">

  <channel>
    <title>Generic mrss feed</title>
    <link>http://www.developer.amazon.com/</link>
    <description>Generic mrss data</description>
    <item>
      <id>1</id>
      <title>Nullamtus</title>
      <link>http://www.developer.amazon.com/</link>
      <pubdate>Wed, 14 Jan 2015 00:36:00 +0000</pubdate>
      <description>Sed a sagittis urna, a fermentum ligula.In sagittis sagittis libero, ut tincidunt sapien egestas.</description>
      <image>https://raw.githubusercontent.com/amzn/web-app-starter-kit-for-fire-tv/master/src/common/assets/images/l1.jpg</image>
      <category>Lifestyle</category>
    </item>
    <item>
      <id>2</id>
      <title>Ut at augue</title>
      <link>http://www.developer.amazon.com/</link>
      <pubdate>Wed, 14 Jan 2015 00:36:00 +0000</pubdate>
      <description>Phasellus vulputate tellus vitae volutpat viverra.Praesent posuere rutrum erat nec suscipit.Fusce interdum porta porta.Integer vulputate malesuada dictum.</description>
      <image>https://raw.githubusercontent.com/amzn/web-app-starter-kit-for-fire-tv/master/src/common/assets/images/l2.jpg</image>
      <category>Travel</category>
    </item>
    <item>
      <id>3</id>
      <title>Quisque porttitor augue</title>
      <link>http://www.developer.amazon.com/</link>
      <pubdate>Wed, 14 Jan 2015 00:36:00 +0000</pubdate>
      <description>Pellentesque vel metus sem.Aenean porta elementum sagittis.</description>
      <image>https://raw.githubusercontent.com/amzn/web-app-starter-kit-for-fire-tv/master/src/common/assets/images/l3.jpg</image>
      <category>Sports</category>
    </item>

  </channel>
</rss>

rss/channel/item/category/text()というクエリからは、次の結果が返されます。

Text='Lifestyle'
Text='Travel'
Text='Sports'

/rss/channel/itemというクエリからは、次の結果が返されます。

Element='<item>
      <title>Taylor Swift</title>
      <guid isPermaLink="false">1</guid>
      <pubDate>Mon, 08 Dec 2014 22:55:16 GMT</pubDate>
      <category>News</category>
      <media:content xmlns:media="http://search.yahoo.com/mrss/"
                  type="jpg"
                  url="http://samples.screenfeed.com/1">
        <media:title type="plain">1080x1920 - English - with caption</media:title>
        <media:credit>© 2014 Thomson Reuters</media:credit>
        <media:thumbnail type="jpg"
                       url="http://samples.screenfeed.com/public/us-news-in-pictures/1080x1920/h9xnRIN9CUGiTWNQBBrjOw-1080x1920h-1"/>
      </media:content>
    </item>'
Element='<item>
      <title>Melanie Martinez</title>
      <guid isPermaLink="false">1</guid>
      <pubDate>Mon, 1 Dec 2014 12:35:56 GMT</pubDate>
      <category>Trending</category>
      <media:content xmlns:media="http://search.yahoo.com/mrss/"
                  type="jpg"
                  url="http://samples.screenfeed.com/2">
        <media:title type="plain">1080x1920 - English - with caption</media:title>
        <media:credit>© 2014 Thomson Reuters</media:credit>
        <media:thumbnail type="jpg"
                       url="http://samples.screenfeed.com/public/us-news-in-pictures/1080x1920/h9x4985398UGiTWNQBBrjOw-1080x1920h-2"/>
      </media:content>
    </item>'