【问题标题】:Parsing atom files in Powershell在 Powershell 中解析 atom 文件
【发布时间】:2019-06-19 20:21:08
【问题描述】:

我正在尝试解析 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]($resp.Content) 将响应转换为 XML 会出错。
一个简单的解决方法是删除初始(空?)字符:

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

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

【问题讨论】:

  • 如果您将Invoke-WebRequest 调用替换为Invoke-RestMethod,您将返回一组XmlElement 项目。它们似乎包含您可能想要的信息。

标签: xml powershell atom-feed


【解决方案1】:

正如 cmets 中所指出的,您可以让 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]',''

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 2015-07-12
    • 2018-10-10
    • 2020-10-22
    • 2010-09-29
    • 1970-01-01
    • 2021-01-02
    • 2020-12-30
    相关资源
    最近更新 更多