Powershell を使用して web.config ファイルを読み込んで変更しています。すべての操作は正常に実行されていますが、ファイルを保存すると、複数行の属性のインデントと新しい改行が失われます。編集前の web.config ファイルは次のようになります。
<maintenance isSet="false" startDate="2012-03-07T00:00:00" endDate="2012-03-07T23:59:59">
<allowedIPAddresses>
<add name="Johns Machine" address = "xx.xx.xxx.xx" />
<add name="Marys Machine" address = "xx.xx.xxx.xx" />
</allowedIPAddresses>
xml を編集する Powershell コードは次のとおりです。
$script:myXML = New-Object System.Xml.XmlDocument
$myXML.PreserveWhitespace = $true
$myXML.CreateXmlDeclaration("1.0","iso-8859-1",$null)
$myXML.Load("C:\dev\web.config")
$ipEntries = $myXML.SelectNodes("/maintenance/allowedIPAddresses")
foreach ($ipEntry in $ipEntries)
{
$ipEntry.RemoveAll()
}
$reader = new-object System.IO.StreamReader($ipTextFile)
$i = 0
while(($line = $reader.ReadLine()) -ne $null)
{
$i++
$node = $myXML.CreateElement("add")
$node.SetAttribute("name", "Machine " + ($i))
$node.SetAttribute("address", $line)
$myXML.SelectSingleNode("/configuration/maintenance/allowedIPAddresses").AppendChild($node)
}
$myXML.Save("C:\dev\web.config")
スクリプト実行後のファイルはこちら
<maintenance isSet="false" startDate="2012-03-07T00:00:00" endDate="2012-03-07T23:59:59">
<allowedIPAddresses><add name="Johns Machine" address="xx.xx.xxx.xx" /><add name="Marys Machine" address="xx.xx.xxx.xx" /></allowedIPAddresses>
ファイルが保存された後、複数行の属性内で改行を保持し、インデントを保持する方法はありますか?