SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows PowerShell 活用編

Windows PowerShell 活用編(7)
XMLデータの基本操作1

XMLドキュメントオブジェクトの作成とファイル出力

ファイルに保存する

 ここではxmlDocumnetオブジェクトをXMLファイルとして保存する方法について説明します。

 ここまでに作成したxmlDocumentオブジェクトをXMLとしてファイルに保存するにはSaveメソッドを使用します。Saveメソッドの引数には保存先となるパスを指定し、下記のように記述します。

PS> $xmlDoc.Save("C:\Work\Sample.xml")

 これでXMLファイルとして保存することができました。

 作成されたファイルをテキストエディタで開いてみると

<root ID="123">
  <child1>5</child1>
  <child2>2</child2>
  <child3>3</child3>
</root>

  

となっており、先頭にXML宣言がないことが分かります。またエンコーディングはShift-Jisで保存されています。

 これをエンコーディングがUTF-8のXML宣言を付加した形で保存するにはXmlTextWriterクラスを使用します。XmlTextWriterクラスは引数にファイルのパスとエンコーディングを指定します。

 最初にUTF-8のエンコーディングを下記のようにして準備します。

PS> $Encoding = [System.Text.Encoding]::UTF8

  

 次にXmlTextWriterを作成します。ここで引数に保存するファイルのパスとエンコーディングを指定しています。 

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

 

 さらに、下記のようにしてXMLファイルを作成するときにインデントされるように指定します。この指定がない場合には、インデントをせずに1行のXMLデータファイルが作成されてしまいます。

PS> $xmlWriter.Formatting = [System.Xml.Formatting]::Indented

 

 次にSaveメソッドでファイルに保存します。ここでSaveメソッドの引数に作成したXmlTextWriterを指定します。これでXML宣言が付加され、UTF-8で保存されます。

PS> $xmlDoc.Save($XmlWriter)

 最後に保存が完了したら、XmlTextWriterClose()メソッドで終了します。

PS> $xmlWriter.Close()

 このようにして作成されたファイルを開くと、下記のようにXML宣言がつき、インデントがされ、UTF-8で保存されたXMLが確認できます。

まとめ

 今回は、PowerShellでのXMLデータ作成を中心に説明しました。PowerShellからXMLファイルを作成することは難しくないことをご理解いただけたかと思います。次回は、既存のXMLファイルから読み込んだデータを操作する方法について説明します。どうぞお楽しみに。

 

参考文献

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Windows PowerShell 活用編連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3681 2009/03/30 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー