PowerShellでXMLを扱う
XMLファイルから、XMLオブジェクトを作る
XMLオブジェクトを作るには、[xml]でキャストします。
PS> $xml = [xml](Get-Content .\Settings.xml -Encoding UTF8)
PS> $xml
xml project
--- -------
version="1.0" encoding="UTF-8" project
用意しているのは以下のようなXMLファイル。
PS> Get-Content .\Settings.xml -Encoding UTF8
<?xml version='1.0' encoding='UTF-8'?>
<project>
<view>
<includeRegex>(?i).*DT-4000.*</includeRegex>
</view>
<deployJob>
<jobName>DT-4000_TestDeploy</jobName>
<p4Stream>//stream_depot/LM_CIV_DT-4000_TestDeploy</p4Stream>
</deployJob>
</project>
XMLオブジェクトの値を参照、書き換え
XMLオブジェクトの値を参照するには、ドット(.)を使用します。
PS> $xml.project.deployJob.jobName
DT-4000_TestDeploy
PS> $xml.project.deployJob.jobName = "DT-4000_Deploy"
PS> $xml.project.deployJob.jobName
DT-4000_Deploy
XMLオブジェクトをファイルに保存する
$xml.Save($Path)を使う。
エンコーディングを指定したい場合は、別の方法。
PS> $Path = "C:\Users\miajimyu\Desktop\Output.xml"
PS> $xml.Save($Path)
PS> Get-Content -LiteralPath $Path
<?xml version="1.0" encoding="UTF-8"?>
<project>
<view>
<includeRegex>(?i).*DT-4000.*</includeRegex>
</view>
<deployJob>
<jobName>DT-4000_Deploy</jobName>
<p4Stream>//stream_depot/LM_CIV_DT-4000_TestDeploy</p4Stream>
</deployJob>
</project>
XMLオブジェクトを文字列にする
XMLオブジェクトを文字列にするには、$xml.OuterXMLが使えます。
# 例 Jenkinsの既存Jobを元に、XMLを編集し、新しいJobを作成する
PS> $text = java -jar jenkins-cli.jar -s "http://localhost:8080/" get-job Test
PS> $text
<?xml version='1.0' encoding='UTF-8'?>
<project>
<actions/>
<description>Description</description>
<keepDependencies>false</keepDependencies>
<properties>
<org.jvnet.hudson.plugins.shelveproject.ShelveProjectProperty plugin="shelve-project-plugin@1.5"/>
</properties>
<scm class="hudson.scm.NullSCM"/>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers/>
<concurrentBuild>false</concurrentBuild>
<builders/>
<publishers/>
<buildWrappers/>
</project>
PS> $xml = [xml]$text
PS> $xml
xml project
--- -------
version="1.0" encoding="UTF-8" project
PS> $xml.project.description
Description
PS> $xml.project.description = "New Description"
PS> $xml.OuterXml | java -jar jenkins-cli.jar -s "http://localhost:8080/" create-job NewTest
スポンサーリンク