1

我有一个 PowerShell 脚本,它读取非常大的 XML 文件并提取代表嵌入式 C# 代码的某些元素的文本值。然后,该脚本将元素文本保存到与 XML 文件结构匹配的目录结构中的 .cs 代码文件中。出于性能考虑,我使用 XmlReader,因为文件太大(有时 > 200 MB)。

原始 XML 文件具有 Windows 行结尾 (CRLF),但 .NET Framework XmlReader 类在从文件中读取时将行结尾从 CRLF“规范化”为仅 LF(符合 XML 规范)。

我的问题是:如何强制 PowerShell 在将文件写出到磁盘时将行结尾恢复为 Windows 标准,这样我就不会因为行结尾的变化而得到源代码控制“噪音”?

我目前正在使用以下 PowerShell 语句编写文件:New-Item -Path $path -Force -ItemType file -Value $reader.ReadElementString()

$reader变量是 的一个实例[System.Xml.XmlReader]

4

2 回答 2

1

你可以这样做:

$reader.ReadElementString().Replace("`n","`r`n")
于 2013-03-06T06:51:21.267 回答
0

我建议System.Xml.Reader完全放弃。PowerShell 的内置 XML 处理更易于管理:

[xml]$data = Get-Content "C:\foo.xml"

$data.SelectNodes("//foo") | % {
  $_.bar
  $_.baz
} | Out-File "C:\out.txt"
于 2013-02-28T19:15:57.063 回答