HIRO's.NET Blog

PowerShellが好き

目次

Blog 利用状況

ニュース

あわせて読みたい

書庫

日記カテゴリ

リンク

Encodingを指定してXMLファイルを作成する(PowerShell Tips)

文字列からXmlDocumentを作成する(PowerShell Tips)

での Xmlファイルの作成はEncodingの指定をせずに保存しました。

今回はEncodingを指定して、保存する方法を紹介します。

 

まずは保存先ファイル名とEncodingを変数に代入します。

PS C:\Work> $SaveFile = "C:\Work\UTF8.xml"
PS C:\Work> $Encoding = [System.Text.Encoding]::UTF8

次に、前回同様ヒア文字列を使用してXML文字列を作成

PS C:\Work> $strXml = @"
>> <?xml version='1.0' encoding='utf-8' ?>
>> <personal_data>
>> <zip_code>012-3456</zip_code>
>> <address>1-1,Tokyo,Japan</address>
>> <name>HIRO</name>
>> </personal_data>
>> "@
>>

で、これをXmlDocument型にキャストしておきます。

PS C:\Work> $xmlDoc = [xml]$strXml

で、前回はここで$XmlDoc.Save()メソッドを実行したのですが、ここでXmlTextWriterを作成します。

こうすることでEncodingを指定できます。

PS C:\Work> $XmlWriter = New-Object System.Xml.XmlTextWriter($SaveFile, $Encoding)

で、保存して、XmlTextWriterを閉じます。

PS C:\Work> $xmlDoc.Save($xmlWriter)
PS C:\Work> $xmlWriter.Close()

実際にファイルを開いてみると、utf-8で有ることが確認できます。(下図はサクラエディタで開いたものです)

utf8 

 

最後に、上記を応用して、Shift_Jisで保存してみたいと思います。

PS C:\Work> $SaveFile = " ps c:\Work\Shift_Jis.xml? c:\Work>$encoding = [System.Text.Encoding]::GetEncoding("Shift_Jis")
PS C:\Work> $xmlDoc = [xml]$strXml
PS C:\Work> $XmlWriter = New-Object System.Xml.XmlTextWriter($SaveFile, $Encoding)
PS C:\Work> $xmlDoc.Save($xmlWriter)
PS C:\Work> $xmlWriter.Close()

作成したXmlファイルはShift_Jisであることが確認できます。

shift_jis

注意事項が2点あります。

1つ目はEncodingです。

UTF8のときと違って、Shift_Jistは

$encoding = [System.Text.Encoding]::Shift_Jis

とすることができません。

GetEncodingメソッドを使用して

[System.Text.Encoding]::GetEncoding("Shift_Jis")

とする必要があります。

2つ目は、Xmlファイルが改行されずに1行になってしまっていることです。

前回の方法で保存したものは改行および自動インデントがされました)

これについては、次回以降で説明したいと思います。


投稿日時 : 2008年3月4日 9:47

コメントを追加

# Encodingを指定してXMLファイルを作成する その2(PowerShell Tips) 2008/03/06 14:11 HIRO's.NET Blog

Encodingを指定してXMLファイルを作成する その2(PowerShell Tips)

タイトル
名前
URL
コメント