删除回车&带有Powershell脚本的XML文件的新行

时间:2016-05-16 07:54:39

标签: xml powershell

需要你帮助删除回车(`r)&我的XML文件中的换行符(`n)。我收到 System.OutOfMemoryException 错误

文件大小:600 MB

行数:1

输入文件格式

<File1>
 <SubFile1> </SubFile1>
 <SubFile2> </SubFile2>
 <SubFile3> </SubFile3>
 .........
 <SubFilen> </SubFilen>
</File1>

使用的代码

$content = [IO.File]::ReadAllText($input_File)
$content = $content.Replace("`r","")
$content = $content.Replace("`n","")
[system.io.file]::WriteAllText($Output_File,$content)

也试过

Get-Content 

我尝试使用MaxMemoryPerShellMB 1024,2048,4096 ,但没有运气。

1 个答案:

答案 0 :(得分:1)

Don Jones有一篇很好的文章Why Get-Content Ain’t Yer Friend

尝试使用StreamReader逐行读取文件,并使用StreamWriter逐行编写新的(临时)文件。完成后,只需替换文件:

$streamReader = New-Object System.IO.StreamReader -Arg "yourFile.xml"
$streamWriter = [System.IO.StreamWriter] "tmp.xml"

while ($line = $streamReader.ReadLine()) {
  $replacedLine = $line -replace '`r|`n'
  $streamWriter.Write($replacedLine);
}

$streamReader.close()
$streamWriter.close()

Remove-Item "yourFile.xml" -Force
Rename-Item "tmp.xml" "yourFile.xml"