我有一个XML文件,我想从下面的文件中删除那些十六进制字符错误是无效字符:
我不知道STX意味着什么,当我尝试将其复制到剪贴板并将其粘贴到MS Work中时,它会显示其他一些值。
如何在powershell中编写脚本以从XML文件中删除上述内容。
答案 0 :(得分:2)
以下正则表达式将通过指定一个否定XML文档中整个有效unicode条目集的字符类来从XML中删除任何无效字符:
$rPattern = "[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000\x10FFFF]"
$xmlText -replace $rPattern,''
这很容易变成a simple function:
function Repair-XmlString
{
[CmdletBinding()]
param(
[Parameter(Mandatory=$true,Position=0)]
[string]$inXML
)
# Match all characters that does NOT belong in an XML document
$rPattern = "[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000\x10FFFF]"
# Replace said characters with [String]::Empty and return
return [System.Text.RegularExpressions.Regex]::Replace($inXML,$rPattern,"")
}
然后做:
Repair-XmlString (Get-Content path\to\file.xml -Raw) |Set-Content path\to\file.xml