GNU/Linux >> Linux の 問題 >  >> Linux

XML 属性の検索 PowerShell XPath

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


Linux
  1. 重複するファイル名の大文字と小文字を区別しない検索?

  2. グローバルSQL検索

  3. Linuxでのripgrep(rg)コマンドの使用

  1. Linux で XPATH の例を使用して XML を解析し、タグを削除する方法 (Linux で PIPE を使用して複数のコマンドを組み合わせる方法)

  2. grep を使用して逆方向に検索する

  3. bash履歴の検索位置をリセット

  1. Linuxでファイルを見つける方法

  2. Kali Linux に PowerShell をインストールする

  3. tmux セッションの対話型検索