子要素を取得する
ここでは子要素を取得する方法について説明します。
子要素は get_ChildNodes()
メソッドで取得することができます。このメソッドは指定した要素の子要素をすべて取得します。
このため、各子要素のデータを取得するには
- 変数に代入し1つずつ取り出す
- for文を使用して取り出す
- foreach文を使用して取り出す
等の方法があります。
それぞれについての例を下記に示します。
変数に代入して1つずつ取り出す
PS> $childs = $root.get_ChildNodes()
get_ChildNodes()
はすべての子要素を返します。それぞれの子要素へのアクセスするにはItem
プロパティを使用します。
()の中には要素番号を指定します。例えば2つめの子要素へのアクセスは、下記のようにItem
プロパティの()内に1を指定します(要素番号は0から数えます)。
PS> $childs.Item(1).get_Name()
for文を使用して取り出す
次にfor文を使用してすべての子要素を取得する例を紹介します。
for文は繰り返し回数を「どこから」「どこまで」という形で指定します。すべての要素を取得する場合には、この「どこから」は最初の要素を示す値、つまり0を指定します。「どこまで」を表す数値には要素の数を指定すれば良いことになります。この要素の数はget_ChildNodes()
が持つCount
プロパティを参照することで取得できます。
このことを踏まえてfor文を記述すると下記のようになります。
PS> for ($i = 0; $i -lt $root.get_ChildNodes().Count; $i++) >> { >> #要素名の取り出し >> $root.get_ChildNodes().Item($i).get_Name() >> #値の取り出し >> $root.get_ChildNodes().Item($i).get_InnerText() >> }
foreachを使用して取り出す
次にforeachですべての子要素を取得してみましょう。
foreachはコレクションオブジェクト(ここでは$root.get_ChildNodes()
)からすべての要素を1つずつ取り出して処理を行います。for文のようにどこからどこまでを取得するか指定する必要がないため、簡潔に記述できます。
PS> foreach ( $child in $root.get_ChildNodes() ) >> { >> #要素名の取り出し >> $child.get_Name() >> #値の取り出し >> $child.get_InnerText() >> } >>