質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • JavaScript

    16347questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Monaca

    976questions

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

  • XML

    651questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

javascriptでXMLをパースするには?

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 870

Aru.

score 50

「クラウドでできる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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

+2

DOMParser について調査すると良いと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    16347questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Monaca

    976questions

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

  • XML

    651questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。