0

Androidアプリケーション内でGdataApiを使用したいと思います。具体的には、ユーザーがキーワードを検索できるようにし、Gdata APIを使用して、これらのキーワードのgoogleproducts内の製品を検索し、返されたxmlを解析できるようにします。

org.xml.sax.helpers.DefaultHandlerを介してxmlファイルを解析する方法を知っていますが、そのようなハンドラーを使用することは想定されておらず、GdataAPIを使用してxmlを解析していると思います。

私の問題は、APIをアプリに統合する方法がわからないことです。stackoverflow(hier)にも同様のトピックがありますが、私は彼らの答えにまったく満足していません。「最近発表されたバージョン2.1.0-AndroidをサポートするGDataJavaライブラリのアルファ版を見る」という情報を誰かに提供するだけでは、gdataをアプリに統合するのにまったく役立ちません。

検索リクエストを行うためのコード例やGoogle製品からの結果の解析など、gdataAPIをアプリに統合する方法をステップバイステップのガイドで教えていただければ幸いです。

4

1 に答える 1

3

数日間の調査の後、私はついに解決策を見つけました:

Googleは、Google Base( hier )に保存されているアイテムにアクセスする方法を紹介しています。驚くべきことに、Google製品にアクセスするためにGoogleデータベースAPIやその他のものを実装する必要はなく、プレーンURLを介して簡単にクエリできます。

URL http://www.google.com/base/feeds/snippetsを介して、GoogleBaseおよびGoogle製品内の公開アイテムにアクセスできます 。このURLに特定のクエリを追加できます。たとえば、デジタルカメラを検索する?bq = digital + camera、または実際のEANコードを検索する?bq=5030932067876です。

そのクエリの結果を保持するXMLドキュメントが返されます。たとえば、URL http://www.google.com/base/feeds/snippets?bq=5030932067876は、次のXMLドキュメントを返します。

<?xml version='1.0' encoding='UTF-8'?>
  <feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gm='http://base.google.com/ns-metadata/1.0' xmlns:g='http://base.google.com/ns/1.0' xmlns:batch='http://schemas.google.com/gdata/batch'>
    <id>http://www.google.com/base/feeds/snippets</id>
    <updated>2010-07-27T15:52:29.459Z</updated>
    <title type='text'>Items matching query: 5030932067876</title>
    <link rel='alternate' type='text/html' href='http://base.google.com'/>
    <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.google.com/base/feeds/snippets'/>
    <link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml' href='http://www.google.com/base/feeds/snippets/batch'/>
    <link rel='self' type='application/atom+xml' href='http://www.google.com/base/feeds/snippets?start-index=1&amp;max-results=25&amp;bq=5030932067876'/>
    <author>
      <name>Google Inc.</name>
      <email>base@google.com</email>
    </author>
    <generator version='1.0' uri='http://base.google.com'>GoogleBase</generator>
    <openSearch:totalResults>20</openSearch:totalResults>
    <openSearch:startIndex>1</openSearch:startIndex>
    <openSearch:itemsPerPage>25</openSearch:itemsPerPage>
    <entry>
      <id>http://www.google.com/base/feeds/snippets/6567855098786723080</id>
      <published>2009-06-17T19:10:11.000Z</published>
      <updated>2010-07-26T19:36:16.000Z</updated>
      <category scheme='http://base.google.com/categories/itemtypes' term='Produkte'/>
      <title type='text'>Xb360 Fifa 09 Electronic Arts EAD07606316 5030932067876</title>
      <content type='html'>FIFA 09 Die brandneue Fußballsimulation! Geh in FIFA 09 auf den Platz und spiel professionellen Fußball, so wie du ihn dir vorstellst. Erlebe die authentischste Fußballsimulation, die EA SPORTS? je veröffentlicht hat, lebe deinen Traum vom  ...</content>
      <link rel='alternate' type='text/html' href='http://www.mercateo.com/p/615IT-R78802/Xb360_Fifa_09.html?PageID=FG-615IT-R78802'/>
      <link rel='self' type='application/atom+xml' href='http://www.google.com/base/feeds/snippets/6567855098786723080'/>
      <author>
        <name>Mercateo.com</name>
      </author>
      <g:zustand type='text'>neu</g:zustand>
      <g:mpn type='text'>EAD07606316</g:mpn>
      <g:image_link type='url'>http://images.mercateo.com/images/products/voelkner/906692_bb_00_fb.eps.jpg</g:image_link>
      <g:item_language type='text'>DE</g:item_language>
      <g:ean type='text'>5030932067876</g:ean>
      <g:id type='text'>615IT-R78802</g:id>
      <g:shipping type='shipping'>
        <g:price>4.76 eur</g:price>
      </g:shipping>
      <g:target_country type='text'>DE</g:target_country>
      <g:preis type='floatUnit'>34.14 eur</g:preis>
      <g:expiration_date type='dateTime'>2010-08-25T19:36:16Z</g:expiration_date>
      <g:marke type='text'>Electronic Arts</g:marke>
      <g:customer_id type='int'>114950</g:customer_id>
      <g:item_type type='text'>Produkte</g:item_type>
    </entry>

(...今後さらに多くのエントリが...)

次の手順を実行するだけで、このドキュメントを解析できます。org.xml.sax.helpers.DefaultHandlerをサブクラス化します。そして、myHandlerを次のコードで初期化します(javax.xml.parsers.SAXParserとjavax.xml.parsers.SAXParserFactoryをインポートして機能させます)。

MyHandler myHandler = new MyHandler();
String urlString = "http://www.google.com/base/feeds/snippets?bq=5030932067876";
URL link = new URL(urlString);
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.setContentHandler(myHandler);
InputStream stream = link.openStream();
InputSource inputSource = new InputSource(stream);
inputSource.setEncoding("ISO-8859-1");
xr.parse(inputSource);

MyHandlerをサブクラス化した方法に応じて、オブジェクトmyHandlerには、解析したばかりのすべての値が含まれている必要があります。

それが誰かを助けることを願っています!

于 2010-07-27T15:58:04.620 に答える