Amazonのウィッシュリストと蔵書検索の連携

たまには、個人的なスプリプトを作ってみる

用途
    • ウィッシュリストに図書館の蔵書の有無を表示し、プリントアウトして図書館に借りに行くときのチェックリストに使う
作成状況
    • ECS4.0でWishlistを取得、jkl-parsexml.jsでパースして必要な部分を表示 済
    • 起動時に総ページ数を取得、1ページから最終ページ迄のリンクを作成する 済
    • リンクをクリックする毎に、指定したページ分のWishlistを取得してテーブルを書き換える 済
    • 図書館から蔵書状況を取得する部分が未着手
作業予定
    • ハイフンを付加したASINコードで図書館へクエリを投げ、蔵書情報を適宜編集してリストの左側に表示する(一度にクエリを投げるのは負荷が高いので、インターバルを置く)
    • サーバ側で、「検索->詳細ページ->必要なデータのみをXMLまたはJSONで返す」までの処理を行わないと面倒かも(複数件ヒットした場合どうするとか、言語はどうするとか未定)
作業するにあたり、以下の点が理解出来ずに、jkl-parsexml.jsを使いこなせていなかったのでメモ
    • jkl-parsexml.jsでXMLファイルをパースするのに、デフォルトでは同じ子要素の個数に応じて配列か否かが決まる
      ->当然、単一要素の場合にfoo.bar[0]としてはエラーになる
    • パースする前に同じ子要素が複数ある場合にどうするか指定するオプションが存在する
      var foo = new JKL.ParseXML( url );でXMLファイルを読み込んだ後に、以下のオプションを指定してからパースする。
      • foo.setOutputArrayElements( "TAG" ) 必ず指定したタグを配列化する、*で全ての要素を配列化
      • foo.setOutputArrayNever() 同じ要素が複数ある場合に、先頭の要素飲みを取り出す
      • foo.setOutputArrayAll() 全て配列化する(foo.setOutputArrayElements( "*" )と同じ)
      • foo..setOutputArrayAuto() 子要素の登場数によって自動判別(デフォルト)、他のサイトのサンプルプログラムをそのままコピーしていたので、パラメータがあること自体に気づかなかった
        本家のサイトをよく読むべき
    • foo.setOutputArrayElements( "TAG" )は指定した以外の要素が複数存在した場合でも、最初の要素以外は削除されるので必要な要素は必ず指定すること
    • 上記オプションを指定していなかったため、各県の蔵書検索サイトもデータ件数が1件の場合と複数件の場合で処理を分けているので、正しい処理に修整する
画面イメージ