我正在尝试解析Microsoft Windows 10 feed:
$feed = "https://support.microsoft.com/app/content/api/content/feeds/sap/en-us/6ae59d69-36fc-8e4d-23dd-631d98bf74a9/atom"
$resp = Invoke-WebRequest -Uri "$feed"
但是使用[xml]($resp.Content)
将响应转换为XML会产生错误。
一个简单的解决方法是删除初始(空?)字符:
[xml]($resp.Content.Substring(1))
哪个是正确的方法?
答案 0 :(得分:1)
如评论中所指出,您可以让Invoke-RestMethod
为您处理内容解析:
$atoms = Invoke-RestMethod -Uri "$feed"
或者您可以使用-replace
正则表达式运算符从字符串的开头剪掉格式化字符:
$atomDoc = $resp.Content -replace '^\p{Cf}' -as [xml]
\p{Cf}
与unicode格式类别下的任何字符匹配
如果您要对输入字符串进行更全面的了解,还可以在XML文档中remove any character that doesn't belong:
$resp.Content -replace '[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000\x10FFFF]',''