PowershellでXMLを読み込む

Powershell

今回はPowershellでXMLファイルを読み込む方法を紹介します。

XMLファイルの準備

XMLファイルはメモ帳で作成することが出来ます。

宣言

1行目にXMLファイルであることを宣言する文を記載します。

versionは1.0と1.1がありますが、現在はまだ1.0が主流のようです。encodingはファイルのエンコード形式を指定します。encodingは省略可能ですが、省略した場合はUTF-8かUTF-16となるようです。基本的に明示的に指定するのがベターです。

XML本文

XMLはすべて要素からなります。開始タグ<>と終了タグ</>で値をくくります。

<要素>値</要素>

またXMLはツリー構造で要素をネストすることが可能です。

<ルート要素>
  <サブ要素1>1</サブ要素1>
  <サブ要素2>2</サブ要素2>
</ルート要素>

これらを踏まえ、以下のサンプルをPowershellから読み込みます。

※メモ帳を利用する場合は、ファイルを保存するときに、ファイルの種類を「すべてのファイル」、文字コードを「UFT-8」を選択してから保存して下さい。

PowershellからXMLファイルを読み込む

変数に格納

Get-ContentコマンドレットでXMLファイルを読み込みます。読み込む際にXMLにキャストします。

今回は変数「$XML」に格納して色々見ていきたいと思います。

  実行結果
PS C:\> $XML = [XML](Get-Content C:\Sample1.xml)

この時点で変数「$XML」にSystem.Xml.XmlDocumentタイプのオブジェクトとして格納されます。

XMLデータの読み出し

子要素であるPersonの情報を読み出すには以下のように指定します。

  実行結果

PS C:\> $XML.Friends.Person
Name Age
—- —
阿部 25
山田 31

これらは1オブジェクトずつ配列に格納されます。

  実行結果
PS C:\> $XML.Friends.Person[0]
Name Age
—- —
阿部 25
PS C:\> $XML.Friends.Person[1]
Name Age
—- —
山田 31

さらに子要素の値を取得するには以下のように指定します。

  実行結果
PS C:\> $XML.Friends.Person.age
25
31

指定した条件のデータを取り出す

30歳以上のPersonを取り出す例です。

  実行結果
PS C:\> $XML.Friends.Person | Where{$_.Age -gt 30}
Name Age
—- —
山田 31

Foreach文とも相性が良く、使い勝手が非常にいいです。

近いうちにXMLファイルを利用したスクリプトを紹介します。

今回はここまで。

コメント