我有一个输入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读取源文件。
发布于 2016-07-12 07:53:36
我将使用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>https://stackoverflow.com/questions/38322740
复制相似问题