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

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

新規登録して質問してみよう
ただいま回答率
85.50%
XML

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

JavaScript

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

Q&A

解決済

2回答

685閲覧

JavaScriptでXMLのノードにアクセスする際のchildNodes[0]について

Silky

総合スコア34

XML

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

JavaScript

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

0グッド

0クリップ

投稿2019/07/13 02:45

編集2019/07/14 19:33

JavaScriptを用いたXMLのノードへのアクセス方法について質問です。
下記がXMLになります。

<book> <title>Harry Potter</title> <author>J.K. Rowling</author> </book>

XMLの「title」にアクセスする際に、下記のようなコードを使用しますが、その際の**childNodes[0]**とはいったい何なんでしょうか?

loadXMLDoc("book.xml").getElementsByTagName("title")[0].childNodes[0].nodeValue;

以上、よろしくお願いいたします。

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

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

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

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

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

think49

2019/07/13 05:42 編集

> **childNodes[0]** コードブロック内でmarkdown記法は使えません
guest

回答2

0

ベストアンサー

JavaScript

1loadXMLDoc("book.xml").getElementsByTagName("title")[0].**childNodes[0]**.nodeValue;

title要素ノードは子ノードに単体のテキストノードを持っています。
childNodes は子ノード群(複数形)なので、初めの子ノードを得るには [0] のインデックス値を指定する必要があります。
firstChild に置き換えても構いません。

Re: Silky さん

投稿2019/07/13 05:45

編集2019/07/13 05:47
think49

総合スコア18156

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

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

Silky

2019/07/13 14:09

ご回答ありがとうございます。分かりやすい説明をありがとうございます。childNodes[0]をfirstChildに置き換えられることまで教えていただきありがとうございました!
think49

2019/07/14 05:42

質問を「編集」して、[質問への追記・修正、ベストアンサー選択の依頼] で指摘した内容を反映して下さい。
Silky

2019/07/14 19:33

修正しました!ご指摘ありがとうございます。
guest

0

getElementsByTagNameで得られるのは「要素のリスト」なのでその最初の物を取得しています。

【element.getElementsByTagName - Web API | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Element/getElementsByTagName

指定された タグ名 による要素のリストを返します。

投稿2019/07/13 03:03

kei344

総合スコア69366

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

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

Silky

2019/07/13 03:10

早速のご回答ありがとうございます。 getElementsByTagName("title")で得られるのは、タグが「title」の要素のリストであり、getElementsByTagName("title")[0]が「title」の要素の一番目であることは理解しています。 しかし、その後に続くchildNodes[0]は何の為にあるのでしょうか。。。?
kei344

2019/07/13 03:14

ああ、すみません勘違いしていました。 テキストノードを取得しているのだと思います。
Silky

2019/07/13 03:26

いえいえ、ご回答本当にありがとうございます! getElementsByTagName("title")[0]のchildNodesは、「title」要素の配下にある(つまり子である)TextNodeの要素のリストということでしょうか? 「title」のTextNodeは、上記のXMLの例でいうと「Harry Potter」という文字列のことですよね?
kei344

2019/07/13 04:47

https://developer.mozilla.org/ja/docs/Web/API/Node/childNodes > childNodesにはテキストノードやコメントノードなどの非要素ノードを含むすべての子ノードが含まれます。要素のみのコレクションを取得するには、代わりにParentNode.children を使用してください。 上記引用のようにテキストノード以外も取ります。 > 「title」のTextNodeは、 そうです。
Silky

2019/07/13 14:08

ご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問