Powershell 中的 Invoke-RestMethod 仅返回内部入口元素,而不返回馈送



我在具有以下结构的提要上调用Powershell的Invoke-RestMethod

<feed>
    <id>feed id</id>
    <author><name>John Smith</name></author>
    <title>Feed title</title>
    <updated>2017-03-17T12:57:28.898Z</updated>
    <link href="url A" rel="value A"/>
    <link href="url B" rel="value B"/>
    ... other elements ...
    <entry>
        <id>entry id</id>
        <author><name>John Smith</name></author>
        <title>Entry title</title>
        <updated>2017-03-17T12:57:28.898Z</updated>
        <link href="url C" rel="value C"/>
        <link href="url D" rel="value D"/>
        ... other elements ...
    </entry>
</feed>

我正在使用以下功能

$xml = Invoke-RestMethod -Method Get -Uri $Url -ContentType "application/atom+xml" -Credential $credentials

我得到了一个成功的响应,但它只包含 <entry> 元素而不是 <feed> 元素,我需要"url A"和"url B"链接的值,因此不会返回。

通常我会说我在这一点上尝试过的东西,但由于我在互联网上什么也没找到,这些是我唯一尝试过的东西。

  1. 将请求内容类型更改为"text/xml" - 结果没有变化。
  2. 调用 $xml.ParentNode$xml.OwnerDocument 以尝试获取 <feed> 元素,但它不可用。

如何获取<feed>级元素?

我的Powershell版本是5.1.14393.953

谢谢

Invoke-RestMethod只返回RSS或atom-feed中的条目,如MSDN所述:

Windows PowerShell 根据数据类型设置响应格式。对于一个 RSS 或 ATOM feed,Windows PowerShell 返回 Item 或 Entry XML 节点。对于 JavaScript Object Notation (JSON( 或 XML,Windows PowerShell 将内容转换(或反序列化(为对象。

您可以使用Invoke-WebRequest来读取原始 xml 并访问源元素

。 例如。
$xml = [xml](Invoke-WebRequest -Uri $url -Credential $credentials)

示例输出:

PS> $xml.feed   
xmlns   : http://www.w3.org/2005/Atom
title   : VG ATOM Feed
link    : {link, link}
id      : http://www.vg.no/rss/feed/forsiden/?format=atom
updated : 2017-03-19T18:36:56+01:00
entry   : {entry, entry, entry, entry...}

最新更新