SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

Windows PowerShell 活用編

Windows PowerShell 活用編(9)
XPathNavigatorクラスの活用1

ダウンロード population.zip (484.0 B)

論理演算子を用いた選択

 ここからは論理演算子を指定して条件に合致するデータの選択方法について学びます。

 論理演算子には下記のようなものがあります。 

論理演算子の種類
演算子 意味
or 各オペランドを評価してどちらかが満たされているときにtrueを返す
and 各オペランドを評価して両方が満たされているときにtrueを返す

人口が500万人以上かつ1000万人以下の県名を取得する

 人口が500万以上は../population>=5000000、人口が1000万以上は../population<=10000000、と表すことができます。また両方を満たしているデータを取得すると言うことは論理演算子「and」を使用すればよいので、この場合のXPath式は下記の通りとなります。

/population_data/prefecture/name[../population>=5000000 and ../population<=10000000]
$nodes =  $navi.Select("/population_data/prefecture/name[../population>=5000000 and ../population<=10000000]")
while ( $nodes.MoveNext() )
{
  $nodes.Current.Value
}

計算結果を取得する

 XPathNavigatorEvaluateメソッドを使用すると計算を行うことが可能です。

すべての県の合計人口を求める

 合計値を求めるにはsum関数を使用し、下記のようにしてデータを取得します。

$navi.Evaluate("sum(/population_data/prefecture/population)")

  

平均人口を求める

 平均を求めるためにすべての県の人口を県の数で割って求めます。
合計は先ほど説明したようにsum関数を使用し、割り算にはdiv関数を使用します。また県の数はcount関数で求めます。

$navi.Evaluate("sum(/population_data/prefecture/population) div count(/population_data/prefecture/population)")

 
 

まとめ

 今回は、PowerShellでXPathNavigatorクラスによる様々なデータの検索方法と演算の実行について説明しました。XPathNavigatorクラスとXPath式を利用することで効率の良いデータの検索が行えることを実感していただけたかと思います。

 次回は、XPathNavigatorクラスを利用したデータの編集方法について説明します。どうぞお楽しみに。

参考文献

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Windows PowerShell 活用編連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3760 2009/04/10 14:00

イベント

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

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

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

メールバックナンバー