PowershellでXMLファイルを新規作成してみる

コンピュータ
PowerShellのあれこれ

以下のようなXMLファイルを作成したい。

<?xml version="1.0"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
  <rootfiles>
    <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml" />
  </rootfiles>
</container>

スクリプト

<#
.SYNOPSIS
 XmlWriterのサンプル
#>

using namespace System.Xml

$xmlFile = ".\container.xml"

$xmlns = "urn:oasis:names:tc:opendocument:xmlns:container"

[xml]$doc = [XmlDocument]::new()

$dec = $doc.CreateXmlDeclaration("1.0", $null, $null)
$doc.AppendChild($dec) | Out-Null

$container = $doc.CreateNode("element", "container", $xmlns)
$container.SetAttribute("version", "1.0")

$rootfiles = $doc.CreateNode("element", "rootfiles", $xmlns)
$container.AppendChild($rootfiles) | Out-Null

$rootfile = $doc.CreateNode("element", "rootfile", $xmlns)
$rootfile.SetAttribute("full-path", "OEBPS/content.opf")
$rootfile.SetAttribute("media-type", "application/oebps-package+xml")
$rootfiles.AppendChild($rootfile) | Out-Null

$doc.AppendChild($container) | Out-Null
$doc.Save($xmlFile) | Out-Null

データの構造を表現するので仕方がないですがコード量が多くなりがちです。
プログラムの目的によってはスクリプトにヒアドキュメントで直接XMLを埋め込んだ方がシンプルで良い場合がありそうです。

コメント