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>
コメント