HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0601
バタコXMLDOMによるXMLファイルの利用について1未解決


バタコ

リンク

2017/6/1(Thu) 17:37:08|NO.80055

XMLDOMのサンプルプログラムを改造したものと楽天ブックAPIを活用し、書籍ISBNから各種情報を取得するプログラムを作っています。
しかし、XMLファイルに該当項目が読み込めない場合に「外部オブジェクトの呼び出しに失敗しました」というエラーが発生してしまいます。
例えば、商品説明(XMLではitemCaption)がもともと設定されていない(<itemCaption/>となっている)場合などです。

もし該当項目が読み込めない場合は、スキップするなり「なし」とするなりしたいのですがどうすればよいのでしょうか?
プログラムのうち、XMLに関係する部分のみ掲載します。

//楽天APIのURL(XMLで取得) url="https://app.rakuten.co.jp/services/api/BooksBook/Search/20130522?applicationId=**********&format=xml&isbn="+isbn newcom oDom,"Microsoft.XMLDOM" oDom("async")="FALSE" ; 同期読み込みを行う oDom->"load" url ; URLを指定する oRoot = oDom("documentElement") if varuse(oRoot)=0 : dialog "エラー1:取得に失敗しました。" :goto *home comres elm_kazu:oDom->"getElementsByTagName" "hits" node = elm_kazu("item",0):node2 = node("firstChild"):kazu = node2("nodeValue") if kazu="0":goto *nashi comres elm_dai:oDom->"getElementsByTagName" "title" comres elm_daikana:oDom->"getElementsByTagName" "titleKana" comres elm_subdai:oDom->"getElementsByTagName" "subtitle" comres elm_subdaikana:oDom->"getElementsByTagName" "subtitleKana" comres elm_img:oDom->"getElementsByTagName" "largeImageUrl" comres elm_author:oDom->"getElementsByTagName" "author" comres elm_authorkana:oDom->"getElementsByTagName" "authorKana" comres elm_price:oDom->"getElementsByTagName" "itemPrice" comres elm_detail:oDom->"getElementsByTagName" "itemCaption" //dai=タイトル・daikana=タイトルカナ・img=画像URL・author=著者・authorkana=著者カナ・teika=税抜定価・hangaku=販売価格に代入 node = elm_dai("item",0):node2 = node("firstChild"):dai = node2("nodeValue"):mes "タイトル:"+dai node = elm_daikana("item",0):node2 = node("firstChild"):daikana = node2("nodeValue"):mes "タイトル:"+daikana node = elm_subdai("item",0):node2 = node("firstChild"):subdai = node2("nodeValue"):mes "サブタイトル:"+subdai node = elm_subdaikana("item",0):node2 = node("firstChild"):subdaikana = node2("nodeValue"):mes "サブタイトル:"+subdaikana node = elm_img("item",0):node2 = node("firstChild"):img = node2("nodeValue") node = elm_author("item",0):node2 = node("firstChild"):author = node2("nodeValue"):mes "著者:"+author node = elm_authorkana("item",0):node2 = node("firstChild"):authorkana = node2("nodeValue"):mes "著者:"+authorkana node = elm_detail("item",0):node2 = node("firstChild"):detail = node2("nodeValue"):mes "説明:"+detail node = elm_price("item",0):node2 = node("firstChild"):price = node2("nodeValue") kakaku = 0.0 + price:teika = kakaku /1.08 :hangaku = teika / 2 teika = strf("%4.0f", ceil(teika)) hangaku = 0+strf("%4.0f", ceil(hangaku)) hangaku = hangaku / 10 : hangaku = hangaku *10 mes "税抜定価:"+teika+"円":mes "半額価格:"+hangaku+"円"



この記事に返信する


eol

リンク

2017/6/2(Fri) 19:56:44|NO.80072

単独で動作するスクリプトを提示してくれないと検証しようがないです。
とりあえず気づいたところを指摘しておきます。

まずElementsのitem数をチェックしてからitemを取得しましょう
つまり node = elm_dai("item",0)の前に elm_dai("length")を調べます。
あとfirstChildなどで取得したcomオブジェクトは存在しない可能性があるのでvaruseで調べましょう



ONION software Copyright 1997-2021(c) All rights reserved.