HOWTO · PowerShell
PowerShell スクリプトを使用して XML ファイルの内容を変更する
このチュートリアルでは、PowerShell スクリプトを使用して XML ファイルのコンテンツを変更するさまざまな方法を示します。
Extensible Markup Language とも呼ばれる XML は、主にドキュメント、データ、書籍などの構造化された情報をシンプルなテキストベースの形式で表現するために使用されます。
この記事では、PowerShell スクリプトを使用して XML ファイルを変更する方法を示します。 また、トピックを理解しやすくするために必要な例と説明が表示されます。
以下の内容の XML ファイルがあるとします。
<settings>
<setting id="LocationOne" value="Dhaka, Bangladesh" />
<setting id="LocationTwo" value="zmw:00000.1.08181" />
</settings>
次に、3つの方法を使用して、上記の XML ファイルを変更します。
方法 1: 子の位置 を使用する
特定の親の子の位置がわかっている場合は、特定の子ノードの値を簡単に変更できます。 この目的のために、以下のコード例に従うことができます。
$xml=[xml](Get-Content "G:\PowerShell\Myxml.xml")
$xml.settings.ChildNodes.Item(0).value = "New York, USA"
$xml.Save("G:\PowerShell\Myxml.xml")
上記の例では、最初に XML ファイルのコンテンツを読み取り、次にその位置を使用して子ノードを見つけます。 ここでは、ChildNodes を使用して子ノードを見つけ、Item(0) を使用して特定の子を選択します。
最後に、$xml.Save("G:\PowerShell\Myxml.xml") 行を使用して、変更した XML ファイルを保存します。 スクリプトを実行すると、XML ファイル内に次のコンテンツが表示されます。
<settings>
<setting id="LocationOne" value="New York, USA" />
<setting id="LocationTwo" value="zmw:00000.1.08181" />
</settings>
方法 1: ID を使用する
特定の要素の id を使用して XML ファイルを変更することもできます。 ここで、id は主に特定の子ノードを選択するために使用されます。 以下の例に従って、このメソッドを使用して XML ファイルを変更できます。
$xml=[xml](Get-Content "G:\PowerShell\Myxml.xml")
$xml.settings.SelectSingleNode("//setting[@id='LocationOne']").value = "New York, USA"
$xml.Save("G:\PowerShell\Myxml.xml")
前の例と同様に、最初に XML ファイルの内容を読み取ります。 その後、SelectSingleNode("//setting[@id='LocationOne']") を使用して特定の子ノードを選択し、value を使用してその値を変更します。
最後に、$xml.Save("G:\PowerShell\Myxml.xml") 行を使用して、変更した XML ファイルを保存しました。
上記のスクリプトを実行すると、 XML ファイル内に以下のコンテンツが表示されます。
<settings>
<setting id="LocationOne" value="New York, USA" />
<setting id="LocationTwo" value="zmw:00000.1.08181" />
</settings>
方法 3: settings.skinsettings.setting を使用する
親ノードに単一の子ノードが含まれる場合、この例に従うことができます。 この方法を理解するために、以下の内容の XML ファイルがあるとします。
<settings>
<skinsettings>
<setting type="bool">false</setting>
</skinsettings>
</settings>
以下の例を見てください。この方法を使用して、上で共有した XML ファイルを変更しました。 この例のコードは次のようになります。
$xml=[xml](Get-Content "G:\PowerShell\Myxml.xml")
$xml.settings.skinsettings.setting."#text" = "true"
$xml.Save("G:\PowerShell\Myxml.xml")
上記の例では、XML ファイルの内容を読み取った後、settings.skinsettings.setting 行を使用して特定の子ノードを選択します。
最後に、$xml.Save("G:\PowerShell\Myxml.xml") 行を使用して、変更した XML ファイルを保存しました。 以下の例に従って、このメソッドを使用して XML ファイルを変更できます。
<settings>
<skinsettings>
<setting type="bool">true</setting>
</skinsettings>
</settings>
ここで共有されているサンプル コードは、Windows PowerShell 環境でのみ実行可能であることに注意してください。