XML 文件格式 - 删除杂散的 CRLF

XML file formatting - remove stray CRLF

我有一个输入 XML 文件(不是很大 - 200),它有格式错误的奇数记录,即由不需要的 CRLF 字符分隔的注释,这些字符放在单独的行中:

<NonStandardAddress>
    <LocationId>L127755</LocationId>
    <Street>UNKNOWN</Street>
    <PostCode>U</PostCode>
</NonStandardAddress>
<Notes>
67 High Street
Newtown
Newshire
RG30 9ZA</Notes>
<StartDate>1970-12-23</StartDate>

它应该看起来像这样,一行中的文本用逗号分隔:

我想分两步进行:

  1. 找到所有未以 > 符号结尾的行并添加逗号(这个 shold 在每个条目之间给我一个分隔符)

  2. 将有逗号的行和 CRLF 替换为逗号(这应该将所有不匹配的行放回 1 行)

顺便说一句,我正在使用 PowerShell v2,所以我不能使用 -Raw 来读取源文件。

我会使用 Get-Content cmdlet 读取 XML,并使用带有 XPath 表达式的 SelectNodes 方法来检索所有元素。然后遍历文本并将所有 CRLF 替换为 ,:

$filePath = 'your_path'
$xml = [xml](Get-Content $filePath)
$xml.SelectNodes('//text()') | ForEach-Object {  
    $_.Value = ($_.Value.Trim() -split "`r?`n") -join ', '
}
$xml.Save($filePath)

输出:

<NonStandardAddress>
  <LocationId>L127755</LocationId>
  <Street>UNKNOWN</Street>
  <PostCode>U</PostCode>
</NonStandardAddress>
<Notes>67 High Street, Newtown, Newshire, RG30 9ZA</Notes>
<StartDate>1970-12-23</StartDate>