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 を使用します。