/*Google AdSense自動広告*/

2020年7月11日土曜日

PowerShellでClassを利用する~keyとvalueの単純なxmlファイルを出力するクラス

プログラミングのオブジェクト指向って大仰に聞こえるけど、「クラス」を使うスタイル・流行だと思えば理解しやすいです。語弊がある、と非難されるかもしれないけど、これ以上は宗教の話になるので…。

クラスというのは(また語弊があると言われそうですが…)、
プログラマが楽するために使うものです。例えば、

Car(車)

というクラスを作り、

Car.Speed = 50
Car.Run

とすると、50km/hで車が走ることにする。

Carというクラスの中身については、他の人に作らせるか、作って忘れるかで、
メンテナンスはなるべくやりたくない、それがクラスの肝です。

さて、本題です。PowerShellはスクリプト言語で、クラスと無関係そうですが、オブジェクト指向であり(ここがコマンドプロンプトやbashより進化している部分)、クラスも十分使えます。

今回は、設定ファイルの保存等に使うことを想定した、xmlファイルの作成・キー追加のクラスを作っていきます。

PowerShellコード↓

class xmlFile
{
    $newFile;
    # ->newFileNameにしてしまいそうだが、そこはオブジェクト志向で…
    
    xmlFile($setFileName){
        $this.newFile =New-Item $setFileName -type file -Force;
        Write-Output '<?xml version="1.0" encoding="UTF-8" ?>' | Add-Content $this.newFile -Force
    }
    
    add($key, $val){
        Write-Output "<$key>$val<⁄$key>" | Add-Content $this.newFile -Force
    }

}

$xf = New-Object xmlFile("$PSScriptRoot\test.xml");
$xf.add("testKey1", "testVal1");
$xf.add("testKey2", "testVal2");

↓出力(スクリプトと同じ場所に、test.xml)




※一応xmlのフォーマットに準じているので、他のプログラムのXMLパーサーが使える筈


クラスの宣言

class クラス名で宣言します。同名のメソッドが自動的にコンストラクタになります。ここではファイル名を指定すると、ファイルが新規作成されるようにしました。

メソッド

メソッドはaddのみ。重複キーの処理や、System.Xml.XmlWriterを使った書き込みもいいと思います。でも結構コードが煩雑になります。

クラスの使用

$変数 = New-Object クラス名 でクラスが生成されます。

その他

New-Itemは新たなファイルやディレクトリを作成する際に使います。
Write-Output をパイプで Add-Content に渡すと、ファイルにテキストを追記できます。この際、改行が自動的に入ることは便利ですが、意図しない場合は注意が必要です。



0 件のコメント:

コメントを投稿