JavaScriptのdocumentオブジェクトのevaluate関数の使い方を現役エンジニアが解説【初心者向け】

初心者向けにJavaScriptのdocumentオブジェクトのevaluate関数の使い方について解説しています。XPathはXML文書中から指定の要素を抽出するのに用いられます。document.evaluateによる要素の取得方法についてサンプルコードで動作を確認しましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

JavaScriptのdocumentオブジェクトのevaluate関数の使い方について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

 

そもそもJavaScriptについてよく分からないという方は、JavaScriptとは何なのかについて解説した記事を読むとさらに理解が深まるでしょう。

 

なお本記事は、TechAcademyのオンラインブートキャンプJavaScript/jQuery講座の内容をもとにしています。

 

田島悠介

今回は、JavaScriptに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

documentオブジェクトのevaluate関数の使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

XPathとは

XPathはXML文章中の要素・属性値などの一部分を切り取って、抽出するため簡素な言語です。

そして、XPathを利用するためにdocumentオブジェクトのevaluate関数を使用する必要があります。

 

documentオブジェクトのevaluate関数(document.evaluate)の使い方

evaluateの基本的な使い方(構文)は以下のようなものです。

document.evaluate( xpathExpression, contextNode, namespaceResolver, resultType, result );

第一引数(xpathExpression)は、XPath式を文字列で指定します。

第二引数(contextNode)は、第一引数の評価対象のノードを指定します。

第三引数(namespaceResolver)は、XPath式に含まれるあらゆる名前・空間・接頭辞を渡され、対応する名前・空間・URIを表す文字列を返す関数です。

 

また、結果は基本的にNullを指定します。

第四引数(resultType)は、XPathResult のタイプを指定しましょう。

XPathResult コンストラクタの名前付き定数プロパティを指定してください。

(0~9の整数)基本的には、ANY_TYPE(0)を設定します。

第五引数(result )には、既存のXPathResultオブジェクトまたはnullを指定しましょう。

 

[PR] JavaScript・jQueryで挫折しない学習方法を動画で公開中

実際に書いてみよう

以下はコード例です。

 

//文字列からXMLオブジェクトを作成
var xml = '<?xml version="1.0" encoding="UTF-8"?><root><twitter><account>';
xml += '<name>セガ公式アカウント</name><id>SEGA_OFFICIAL</id></account>';
xml += '<account><name>タカラトミー</name><id>takaratomytoys</id></account></twitter></root>';
var xmlParser = new DOMParser();
var xmlDoc = xmlParser.parseFromString(xml, "text/xml");

//作成したXMLオブジェクトに対してXPathを使用する。
var r = xmlDoc.evaluate("//name", xmlDoc, null, XPathResult.ANY_TYPE, null);
var s = [];
while ((ret = r.iterateNext()) !== null){
s.push(ret.textContent);
}
console.log(s);
// ["セガ公式アカウント", "タカラトミー"]

 

執筆してくれたメンター

水野大輝(みずのたいき)

2014年より、某物流会社のシステム開発担当として入社。

未経験ながら、社内システム保守~新規受注システム開発まで携わり、JavaScript Ruby on Rails PostgreSQLなどの経験を積む。

現在も、開発案件に携わりながら、日々勉強中。

 

大石ゆかり

JavaScriptのdocumentオブジェクトのevaluate関数の使い方がよくわかったので良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも最短4週間でJavaScript・jQueryを使ったWebサービス公開を習得できるオンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、参加してみてください。