PowerShellでXHTMLファイルを更新するサンプルコード

コンピュータ

idを指定して文字列を置き換えるサンプルコードです。

ソースコード

# 入力と出力(同じファイルに上書き可)
$in  = ".\sample-xhtml.html"     # 記事のサンプルを保存したXHTML
$out = ".\sample-xhtml.html"     # そのまま上書きする場合

# XMLを読み込み
[xml]$xml = Get-Content $in -Raw

# XHTML名前空間を登録
$ns = New-Object System.Xml.XmlNamespaceManager($xml.NameTable)
$ns.AddNamespace("x", "http://www.w3.org/1999/xhtml")

# id="Msg1" を取得してテキスト置換
$node = $xml.SelectSingleNode("//x:*[@id='Msg1']", $ns)
if ($node)
{
    $node.InnerText = "ここに新しいメッセージ(プレーンテキスト)"
    # 可能なら元の宣言のエンコーディングを維持して保存
    $xml.Save($out)
}

実行結果

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"[]>
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
  <head>
    <title>PowerShellで作成したXHTMLファイル</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  </head>
  <body>
    <p id="Msg1">ここに新しいメッセージ(プレーンテキスト)</p>
  </body>
</html>

コメント