「クラウドでできるHTML5ハイブリッドアプリ開発」のバーコードスキャナーアプリのテンプレートがあるのですが、商品情報をヤフーショッピングのAPIより取得するのではなく国立国会図書館の書籍の情報にしたいのですがXMLの取得、パースの仕方がわかりません。ご教授お願いします。
当方初心者ですのでアバウトな質問でごめんなさい。
追加情報が必要な場合はご指示お願いいたします。
国会図書館のAPI "http://iss.ndl.go.jp/api/opensearch?isbn="
書籍のISBNの例 "9784798140285"
リクエスト例
"http://iss.ndl.go.jp/api/opensearch?isbn=9784798140285"
とりあえず
titleとauthorの情報を取得したいです。
"use strict";
var loadingDialog = null;
ons.ready(function() {
// 読み込み中ダイアログの初期化
ons.createAlertDialog('loading.html').then(function(alert) {
loadingDialog = alert;
});
});
module.factory('Product', function() {
var Product = function(params) {
this.name = params.name;
this.price = params.price;
this.desc = params.desc;
this.thumbnailUrl = params.thumbnailUrl;
this.imageUrl = params.imageUrl;
this.url = params.url;
};
return Product;
});
module.controller('AppController', function($scope, Product, $http) {
$scope.scan = function() {
var onSuccess = function(result) {
if (!result.cancelled) {
/*alert("We got a barcode\n" +
"Result: " + result.text + "\n" +
"Format: " + result.format + "\n" +
"Cancelled: " + result.cancelled);*/
loadingDialog.show();
$scope.search(result.text, function(product) {
$scope.history.unshift(product);
$scope.history = $scope.history.slice(0, 10);
$scope.saveHistory();
$scope.selectProduct(product);
setTimeout(function() {
loadingDialog.hide();
}, 200);
}, function() {
loadingDialog.hide();
ons.notification.alert({
title: '商品検索に失敗しました',
message: '商品情報を取得できませんでした',
buttonLabel: 'OK',
animation: 'default', // もしくは'none'
});
});
}
};
var onFailure = function(error) {
ons.notification.alert({
message: error,
title: 'スキャンに失敗しました',
buttonLabel: 'OK',
animation: 'default', // もしくは'none'
});
};
// バーコードをスキャンする
plugins.barcodeScanner.scan(onSuccess, onFailure);
};
$scope.selectProduct = function(product) {
$scope.currentProduct = product;
navi.pushPage('details.html');
};
$scope.search = function(janCode, callback, failCallback) {
var apiUrl = 'http://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch';
// 取得したアプリIDを代入
// http://www.yahoo-help.jp/app/answers/detail/p/537/a_id/43398/session/L2F2LzEvdGltZS8xNDE4NjEyODk4L3NpZC9WekVGaFc5bQ%3D%3D
var appId = 'dj0zaiZpPVdaMnVsQnF4aHVlUCZzPWNvbnN1bWVyc2VjcmV0Jng9YTE-';
$http.get(apiUrl, {params: {appid: appId, jan: janCode}})
.success(function(data, status, headers, config) {
try {
var product = createProduct(data);
callback(product);
} catch(e) {
failCallback();
}
})
.error(function(data, status, headers, config) {
failCallback();
});
// APIの返り値からProductオブジェクトを生成する
function createProduct(response) {
var firstResult = response.ResultSet[0].Result[0];
return new Product({
name: firstResult.Name,
desc: firstResult.Description,
url: firstResult.Url,
imageUrl: firstResult.Image.Medium,
thumbnailUrl: firstResult.Image.Small,
price: firstResult.Price._value
});
}
};
$scope.openWithBrowser = function(url) {
// 外部ブラウザで開く
window.open(url, '_system');
};
$scope.saveHistory = function() {
window.localStorage.setItem('history', JSON.stringify($scope.history));
};
$scope.clearHistory = function() {
$scope.history = [];
$scope.saveHistory();
};
try {
$scope.history = JSON.parse(window.localStorage.getItem('history'));
if (!angular.isArray($scope.history)) {
$scope.history = [];
}
} catch (e) {
$scope.history = [];
}
});
<rss xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcndl="http://ndl.go.jp/dcndl/terms/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" version="2.0">
<channel>
<title>9784798140285 - 国立国会図書館サーチ OpenSearch</title>
<link>
http://iss.ndl.go.jp/api/opensearch?isbn=9784798140285
</link>
<description>Search results for isbn=9784798140285</description>
<language>ja</language>
<openSearch:totalResults>1</openSearch:totalResults>
<openSearch:startIndex>1</openSearch:startIndex>
<openSearch:itemsPerPage/>
<item>
<title>
クラウドでできるHTML5ハイブリッドアプリ開発 : Cordova/Onsen UIで作るiOS/Android両対応アプリ : Monaca公式ガイドブック
</title>
<link>
http://iss.ndl.go.jp/books/R100000002-I026086786-00
</link>
<description>
<![CDATA[
<p>翔泳社,9784798140285</p> <ul><li>タイトル: クラウドでできるHTML5ハイブリッドアプリ開発 : Cordova/Onsen UIで作るiOS/Android両対応アプリ : Monaca公式ガイドブック</li> <li>タイトル(読み): クラウド デ デキル エイチティーエムエル ファイヴ ハイブリッド アプリ カイハツ : コルドヴァ オンセン ユーアイ デ ツクル アイオーエス アンドロイド リョウタイオウ アプリ : モナカ コウシキ ガイドブック</li> <li>責任表示: 永井勝則 著,アシアル株式会社 監修,</li> <li>NDC(9): 007.64</li> </ul>
]]>
</description>
<author>永井勝則 著,アシアル株式会社 監修,</author>
<category>本</category>
<guid isPermaLink="true">
http://iss.ndl.go.jp/books/R100000002-I026086786-00
</guid>
<pubDate>Thu, 05 Mar 2015 09:00:00 +0900</pubDate>
<dc:title>
クラウドでできるHTML5ハイブリッドアプリ開発 : Cordova/Onsen UIで作るiOS/Android両対応アプリ : Monaca公式ガイドブック
</dc:title>
<dcndl:titleTranscription>
クラウド デ デキル エイチティーエムエル ファイヴ ハイブリッド アプリ カイハツ : コルドヴァ オンセン ユーアイ デ ツクル アイオーエス アンドロイド リョウタイオウ アプリ : モナカ コウシキ ガイドブック
</dcndl:titleTranscription>
<dc:creator>永井勝則 著</dc:creator>
<dc:creator>アシアル株式会社 監修</dc:creator>
<dc:publisher>翔泳社</dc:publisher>
<dcterms:issued xsi:type="dcterms:W3CDTF">2015</dcterms:issued>
<dc:identifier xsi:type="dcndl:ISBN">9784798140285</dc:identifier>
<dc:identifier xsi:type="dcndl:JPNO">22533559</dc:identifier>
<dc:identifier xsi:type="dcndl:TOHANMARCNO">33220623</dc:identifier>
<dc:subject>プログラミング (コンピュータ)</dc:subject>
<dc:subject>スマートフォン</dc:subject>
<dc:subject xsi:type="dcndl:NDLC">M159</dc:subject>
<dc:subject xsi:type="dcndl:NDC9">007.64</dc:subject>
<dcterms:description>索引あり</dcterms:description>
<rdfs:seeAlso rdf:resource="http://id.ndl.go.jp/bib/026086786"/>
<rdfs:seeAlso rdf:resource="https://www.library.pref.osaka.jp/licsxp-opac/WOpacMsgNewListToTifTilDetailAction.do?tilcod=10021400162374"/>
<rdfs:seeAlso rdf:resource="http://web.oml.city.osaka.lg.jp/webopac_i_ja/0013420570"/>
<rdfs:seeAlso rdf:resource="http://opac.library.kochi.jp/winj/opac/switch-detail-iccap.do?bibid=1109743777"/>
</item>
</channel>
</rss>
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる