PowerShell: XMLファイルの読み込み

PowerShellでXMLファイルを読み込んで内容を表示する方法を紹介します。 XMLファイルを読み込むための特別なコマンドレットはなく、 Get-Contentコマンドレットでファイルを読み込み、 System.XML.XMLDocument型(xml型)に変換します。

ここでは社員情報を格納していいるxmlファイル 「sample.xml」を読み込みます。
sample.xmlには大枠としてemployees要素(複数形)があり、 その子要素にemployee要素(単数形)があります。 employee要素の子要素としてid、name、yearがあります。

sample.xml
<?xml version="1.0"?>
<employees>
<employee>
	<id>1</id>
	<name>田中</name>
	<year>2000</year>
</employee>
<employee>
	<id>2</id>
	<name>鈴木</name>
	<year>2001</year>
</employee>
<employee>
	<id>3</id>
	<name>佐藤</name>
	<year>2002</year>
</employee>
</employees>

XMLファイルの読み込みは非常にシンプルです。 次のコードのように、 Get-Contentで読み込んで、 [xml]でXML型に変換するだけです。

PowerShell
$content = Get-Content .\sample.xml

$xml = [xml]$content

$xml
実行結果
xml           employees
---           ---------
version="1.0" employees

次はemployee要素の中にあるid、name、year要素のデータを取得(表示)します。

$content = Get-Content .\sample.xml

$xml = [xml]$content

foreach ($employee in $xml.employees.employee){
	Write-Host "-----------"
	$employee.id
	$employee.name
	$employee.year
}

foreach文を使ってemployee要素をループし、 その中にある子要素を取得(表示)しています。

実行結果
-----------
1
田中
2000
-----------
2
鈴木
2001
-----------
3
佐藤
2002

先程はforeach文を使って全てのemployee要素をループしましたが、 要素数を指定してデータを取得することもできます。
次のコードは要素数が0(1番目)のemployee要素のデータを取得しています。 要素数はLengthプロパティで取得します。

$content = Get-Content .\sample.xml

$xml = [xml]$content

$xml.employees.employee[0].id
$xml.employees.employee[0].name
$xml.employees.employee[0].year

Write-Host "要素数"
$xml.employees.employee.Length
実行結果
1
田中
2000
要素数
3
PowerShell