1

非常に大きな XML ファイルを読み取り、埋め込まれた C# コードを表す特定の要素のテキスト値を抽出する PowerShell スクリプトがあります。次に、スクリプトは要素テキストを、XML ファイルの構造と一致するディレクトリ構造の .cs コード ファイルに保存します。ファイルが非常に大きい (場合によっては 200 MB を超える) ため、パフォーマンスのために XmlReader を使用しています。

元の 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 に答える