PowerShell で XML ファイルを読み込む方法を紹介します。
XML ファイルの準備
XML ファイルはメモ帳で作成することが出来ます。
宣言
1 行目に XML ファイルであることを宣言する文を記載します。
<?xml version="1.0" encoding="UTF-8"?>
version は 1.0 と 1.1 がありますが、現在はまだ 1.0 が主流のようです。encoding はファイルのエンコード形式を指定します。encoding は省略可能ですが、省略した場合は UTF-8 か UTF-16 となるようです。基本的に明示的に指定するのがベターです。
XML 本文
XML はすべて要素からなります。開始タグ <> と終了タグ </> で値をくくります。
<要素>値</要素>
また XML はツリー構造で要素をネストすることが可能です。
<ルート要素>
<サブ要素1>1</サブ要素1>
<サブ要素2>2</サブ要素2>
</ルート要素>
これらを踏まえ、以下のサンプルを Powershell から読み込みます。
<?xml version="1.0" encoding="UTF-8"?>
<Friends>
<Person>
<Name>阿部</Name>
<Age>25</Age>
</Person>
<Person>
<Name>山田</Name>
<Age>31</Age>
</Person>
</Friends>
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 文とも相性が良く、使い勝手が非常にいいです。
リンク
コメント