在Powershell中解析Atom文件

时间:2019-06-19 11:23:46

标签: xml powershell atom-feed

我正在尝试解析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))

哪个是正确的方法?

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]',''