SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows PowerShell 活用編

Windows PowerShell 活用編(8)
XMLデータの基本操作2

  • X ポスト
  • このエントリーをはてなブックマークに追加

子要素を取得する

 ここでは子要素を取得する方法について説明します。

 子要素は 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()
>> }
>>

次のページ
属性を取得する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Windows PowerShell 活用編連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3755 2009/04/03 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング