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>'