PowerShell で XML を読み込む

Powershell

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>

メモ帳を利用する場合は、ファイルを保存するときに、ファイルの種類を「すべてのファイル」、文字コードを「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 文とも相性が良く、使い勝手が非常にいいです。

コメント

タイトルとURLをコピーしました