4

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>

ファイルが保存された後、複数行の属性内で改行を保持し、インデントを保持する方法はありますか?

4

1 に答える 1