Extensible Markup Language (XML) は、構造化データの格納に使用されるプレーン テキスト形式です。 XML は人間と機械の両方が判読できるように書かれています。
XML ドキュメントは、多くの場合、次のように宣言で始まります:
<?xml version="1.0" encoding="utf-8"?>
Select-Xml コマンドを使用して、XPath クエリ言語を使用して XML ドキュメントを検索できます。 PowerShell v3 以降には、Select-Xml コマンドレットも含まれています。このコマンドレットは、XML 文字列または XML ドキュメント内のテキストを検索するように設計されています。具体的には、XPath クエリを実行するように設計されています。
この XML に関する Powershell チュートリアルでは、XML 属性を検索して、XML を検索し、特定のノードを抽出する方法について説明します。これを行うために select-Xml コマンドレットを使用しますが、XPath クエリは属性レベルになります。このチュートリアルで提供されている例を使用すると、Powershell で XML データを簡単にクエリし、出力値を使用できるはずです。
1.属性付きの入力 XML
このチュートリアルでは、次の入力 XML を使用します:
<Details>
<department count="10">
<ID>10</ID>
<dname>Administration</dname>
<manager>200</manager>
<location>1700</location>
<revenue>77</revenue>
</department>
<department count="20">
<ID>20</ID>
<dname>Marketing</dname>
<manager>201</manager>
<location>1800</location>
<revenue>50</revenue>
</department>
</Details> 2. XML を PowerShell に読み込む
下の図に示すように、XML を直接 PowerShell に読み込みます。
PS C:\> $xml_attributes=@" >> <Details> >> <department count="10"> >> <ID>10</ID> >> <dname>Administration</dname> >> <manager>200</manager> >> <location>1700</location> >> <revenue>77</revenue> >> </department> >> <department count="20"> >> <ID>20</ID> >> <dname>Marketing</dname> >> <manager>201</manager> >> <location>1800</location> >> <revenue>50</revenue> >> </department> >> </Details> >> "@ >> PS C:\>
変数 xml_attributes には、select-Xml コマンドレットを使用して検索できる XML データが含まれています。
3. PowerShell の属性で XML を検索 – XPath
例としてすべての「count」属性値をリストしたい場合は、以下のコマンドに従ってこれを行うことができます。
C:\>powershell
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.
PS C:\> Select-Xml -Content $xml_attributes -XPath '//@count' | foreach {$_.node
}
#text
-----
10
20 ここでは、「//」を使用して XML 属性を直接クエリし、「foreach」ステートメントを使用して Powershell で値を出力します。
4.属性値に一致する XML ノードの一覧表示 – 例
この場合、要件は、カウントが 10 に一致するすべての部門の詳細をリストすることです。これは、XPath で属性値を 10 に一致させ、出力を印刷することで簡単に実行できます。これを行うための Powershell コマンドを以下に示します:
PS C:\> Select-Xml -Content $xml_attributes -XPath '//department[@count="10"]' |
foreach {$_.node}
count : 10
ID : 10
dname : Administration
manager : 200
location : 1700
revenue : 77 まとめ
XML は簡単に操作できます。設定とデータ保存に使用できます。開始ドキュメントを手動で設定し、それをシェルにロードして、その要素を列挙する方法を見てきました。 XPath を使用して、XML ドキュメントをナビゲートまたは検索できます。 PowerShell (および .NET) は XPath 1.0 を使用します。