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>
它应该看起来像这样,一行中的文本用逗号分隔:
我想分两步进行:
找到所有未以 >
符号结尾的行并添加逗号(这个 shold 在每个条目之间给我一个分隔符)
将有逗号的行和 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>
我有一个输入 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>
它应该看起来像这样,一行中的文本用逗号分隔:
我想分两步进行:
找到所有未以
>
符号结尾的行并添加逗号(这个 shold 在每个条目之间给我一个分隔符)将有逗号的行和
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>