我有一个输入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
的行(这应该将所有不匹配的行重新组合在一行)
我正在使用PowerShell v2 btw,所以我无法使用-Raw
来阅读源文件。
答案 0 :(得分:3)
我会使用/home/myuser/my_folder_aaaa
/home/myuser/my_folder_bbbb
/home/myuser/my_folder_cccc
cmdlet读取XML,并使用带有XPath表达式的Get-Content
方法来检索所有元素。然后迭代文本并将所有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)