(ヽ´ω`) < 2. 作成したDOMから要素を選択。
(ヽ´ω`) < 作成したDOMから要素を選択。
1で作成したdoc
から、値を取得したい要素(Nokogiri::XML::Nodeオブジェクト)を選択する。選択方法にはXPathとCSSの他に、children, parents, siblings等の一般的なツリー探索のメソッド郡が用意されている。
(ヽ´ω`) < XPathとCSSで選択する
XPathとCSSで要素を選択するには、それぞれ#xpath
と#css
を使用する。
(ヽ´ω`) < 選択されるのは常にNodeSet
irbで上記のコードを順次実行してもらうとわかるが、#xpath
と#css
メソッドが返す値は常に[]
で囲まれた値、つまりは配列のような値となる。(実際にはNokogiri::XML::NodeSet
のオブジェクト)
上記の例ではHTML内のtitle要素といった、HTML文章内で1つしか存在しないことが明確な要素であっても、要素数1の配列(のようなオブジェクト)が返される。
ここから目的のNodeオブジェクトを取得する方法は、Arrayオブジェクトのそれとほとんど同じ。
これは忘れがちだが、重要なポイントとなる。詳しくは、次の「3. 選択された要素から値を取り出す。又は更にそこから要素を選択」で説明する。
ちなみにNodeSetとSetの名前がついているが、重複した値も許可されているし、順序も保証されている。
(ヽ´ω`) < 一般的なツリー探索メソッド(children, parent, *sibling)
#children
, #parent
, #(next|previous)_sibling
等の一般的なツリー探索メソッドも用意されている。#parent
など、これらのメソッドではNodeSetではなく、Nodeオブジェクトを返すものもある。あまり使わないんじゃない感が強いので割愛。
(ヽ´ω`) < 次は?
1でdoc
を作成して、今回*_nodes
を作成(選択)した。
最後はこれら選択された要素群から、実際に値を取り出していく。