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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

XML

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

Q&A

解決済

1回答

4297閲覧

Vue.js axios XML タグ内の値が取得できない

aoki_monpro

総合スコア45

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

XML

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

0グッド

0クリップ

投稿2018/10/29 06:36

Vue.js + axios でXMLの値を取得したいのですが、うまく取得できません。

<prefecture>以下のデータは取得できているのですが、
<prefecture>内の、cdとname の値を取得しようとするとundefinedと表示されます。

<prefecture>以下に<LargeArea>タグがあり、
こちらにもcd, nameがあるからでは?と思うのですが・・

<prefecture>内のcd, nameと
<LargeArea>内のcd, nameを
それぞれ取得する方法があればご教授いただけませんでしょうか。

//対象のXML <Results xmlns="jws"> <APIVersion>1.0</APIVersion> <Area> <Region cd="01" name="北海道"> <Prefecture cd="010000" name="北海道"> <LargeArea cd="010200" name="札幌">...</LargeArea> <LargeArea cd="010300" name="定山渓">...</LargeArea> <LargeArea cd="010500" name="小樽・キロロ・積丹">...</LargeArea>
// app.js (Vue.js) const vm = new Vue({ el: '#app', data: { prefs: [], largearea: '', }, methods: { get_location: function () { const request = 'ajax.php?url=http://jws.jalan.net/APICommon/AreaSearch/V1/?key=API_KEY' axios.get(request, { timeout: 3000, responseType: 'document' }) .then(function (response) { const xml = response.data; const areas = xml.getElementsByTagName('prefecture'); for (var i = 0; i < areas.length; i++) { console.log(areas[i]) console.log(areas[i].cd)
//Chromeコンソール出力 app.js:22 <prefecture cd=​"010000" name=​"北海道">​…​</prefecture>​ app.js:23 undefined app.js:22 <prefecture cd=​"020000" name=​"青森県">​…​</prefecture>​ app.js:23 undefined app.js:22 <prefecture cd=​"030000" name=​"岩手県">​…​</prefecture>​ app.js:23 undefined

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

areas[i] の値と型をデバッガで確認してみてください、するとHTMLCollection型であることがわかります。

つまり、areas[i]はPrefectureという型ではなく、当然cdというメンバを持っていません
cdにアクセスしたければ areas[i].attributes['cd'] としてください。

html要素を操作する感じでやればよいかと。

投稿2018/10/29 07:14

編集2018/10/29 10:02
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aoki_monpro

2018/10/29 09:06

ありがとうございます! デバッガで確認して console.log(areas[i].attributes[0].value) にて値取得できました。 助かりました^^
退会済みユーザー

退会済みユーザー

2018/10/29 10:02 編集

あ、attributes['cd']の間違いでした(;_; 丸括弧にしてましたね、ごめんなさい('_';
aoki_monpro

2018/10/29 10:05

いえいえ^^ヒントいただけて大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問