在 Powershell 中解析 atom 文件

Parsing atom files in Powershell

我正在尝试解析 Microsoft Windows 10 提要:

$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 和 [xml]($resp.Content) 会出错。
一个简单的解决方法是删除初始(空?)字符:

[xml]($resp.Content.Substring(1))

顺便问一下,哪种方法是正确的?

正如评论中所指出的,您可以让 Invoke-RestMethod 为您处理内容解析:

$atoms = Invoke-RestMethod -Uri "$feed"

或者您可以使用 -replace 正则表达式运算符 trim 格式化字符串开头的字符:

$atomDoc = $resp.Content -replace '^\p{Cf}' -as [xml]

\p{Cf} 匹配属于 unicode 格式类别的任何字符


如果您正在寻找更全面的输入字符串清理方法,您还可以 在 XML 文档中:

$resp.Content -replace '[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000\x10FFFF]',''