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 環境でのみ実行可能であることに注意してください。
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn