powershell将XML字符串中的所有换行符替换为\n,并将表格替换为\t

powershell将XML字符串中的所有换行符替换为\n,并将表格替换为\t,xml,powershell,non-ascii-characters,Xml,Powershell,Non Ascii Characters,我有这样一个XML字符串: <store:book name="history"> <department>one</department> <department>two</department> </store:book> 编辑:为了更好地阐明我的需求,我需要像这样填写JSON参数: $postData = "{""Source"":""${updatedSource}""}" 编辑:添加目标REST调用。请

我有这样一个XML字符串:

<store:book name="history">
  <department>one</department>
  <department>two</department>
</store:book>
编辑:为了更好地阐明我的需求,我需要像这样填写JSON参数:

$postData = "{""Source"":""${updatedSource}""}"
编辑:添加目标REST调用。请求的代码已经正确了,我使用一个填充为目标的字符串对其进行了测试

[System.Net.HttpWebRequest]$req=[System.Net.HttpWebRequest][System.Net.WebRequest]::Create($finalUri)
$req.Headers.Add(“授权”、“承载人”+$toolingService.SessionHeaderValue.sessionId)
$req.ContentType=“应用程序/json”
$req.Method=“补丁”
$postData=“{”Source”“:“${updatedSource}”
$encodedContent=[System.Text.Encoding]::UTF8.GetBytes($postData)
$req.ContentLength=$encodedContent.length
$requestStream=$req.GetRequestStream()
$requestStream.Write($encodedContent,0,$encodedContent.length)
$requestStream.Close()
[System.Net.WebResponse]$res=$req.GetResponse()
[System.IO.StreamReader]$reader=新对象System.IO.StreamReader($res.GetResponseStream(),[System.Text.Encoding]::UTF8)
$result=$reader.ReadToEnd()
$serializer=新对象-TypeName System.Web.Script.Serialization.JavaScriptSerializer

$obj=$serializer.DeserializeObject($result)
您可以使用Replace函数:

$updatedSource = $updatedSource.Replace("`n","\n").Replace("`t","\t")

请注意,转义字符是反勾号,而不是撇号。

最终解析如下:

替换此代码:


$updatedSource=获取内容$file-Raw
我有点困惑。。。REST服务是否不能正确处理请求对象中的空白?这让我很惊讶。你还提到了一个JSON主体。。。在我看来,你发布的内容都不像JSON!我们是否遗漏了一些信息?我已更新了上述要求。关键是JSON参数不允许将换行符转换为字符串值,因此我必须使用\n和\t两种方法对它们进行转义。这里仍然没有JSON。这是xml。你是如何进行API调用的?嗨,谢谢你的快速回答!尝试此解决方案后获得一些奇怪的输出:\n>2
$postData = "{""Source"":""${updatedSource}""}"
$updatedSource = $updatedSource.Replace("`n","\n").Replace("`t","\t")