こんにちは。
けいぞうです。
今回は「PowerShellでxmlの読み込みをする方法」についての記事です。
PowerShellでxmlを読み込む方法
以下のようなxmlがあったとします。
<?xml version="1.0"?>
<Setting>
<MailConfig>
<!--メール共通設定 -->
<MailCommonSetting>
<SMTPServer>smtp.gmail.com</SMTPServer>
<Port>587</Port>
<MailAddress>keizou@example.com</MailAddress>
<Password>passpass123</Password>
</MailCommonSetting>
<!-- BitCoin価格が閾値に到達した際に送信されるメールに関する設定 -->
<BitCoinThresholdMail>
<MailTo>keizou@example.com, yamada@example.com</MailTo>
<MailFrom>keizou@example.com</MailFrom>
<Subject>Bitcoin value high Information : {0} yen</Subject>
<Body>BitCoin value reached {0} yen.
This E-mail is automatical.
Do not reply.
</Body>
<Threshold>1,000,000</Threshold>
<NowPricePath>C:\SystemTrade\Iberry\NowPrice.txt</NowPricePath>
<logFilePath>C:\SystemTrade\Iberry\logs\BitCoinThresholdMail.log</logFilePath>
</BitCoinThresholdMail>
</MailConfig>
</Setting>
これは数年前に私が作った、ビットコインが設定した価格を超えたらメールを送るツールで使っていたxmlです。
例えばここから、メールの送信先を取得する場合は、以下のように書きます。
#設定ファイルを取得
$SettingPath = "C:\SystemTrade\Iberry\bin\IberryConfig.xml"
$Settingxml = [xml](Get-Content -Encoding Default $SettingPath)
#メール送信先を取得
$EmailTo = $Settingxml.Setting.MailConfig.BitCoinThresholdMail.MailTo.ToString()
このように、取得したいxmlファイルをGet-Contentで読み込んで、[xml]でキャストして変数に持たせることで、ドットでタグをつないで値を簡単に取り出すことができます。
PowerShellにはこの「xml」の型が存在するから、楽にxmlを扱うことができるんです。
> $Settingxml.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False XmlDocument System.Xml.XmlNode
最近のコメント