在 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]',''
我正在尝试解析 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 格式类别的任何字符
如果您正在寻找更全面的输入字符串清理方法,您还可以
$resp.Content -replace '[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000\x10FFFF]',''