Powershell中的Invoke-RestMethod仅返回内部条目元素而不是

时间:2017-03-19 16:42:38

标签: rest powershell powershell-v5.0

我在具有以下结构的Feed中调用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>元素,我需要&#34; url A&#34;的值。和&#34; url B&#34;因此不会返回的链接。

通常情况下,我会说我在这一点上尝试了什么,但由于我在互联网上一无所获,这些是我尝试过的唯一内容。

  1. 将请求内容类型更改为&#34; text / xml&#34; - 结果没有变化。
  2. 致电$xml.ParentNode$xml.OwnerDocument以尝试获取<feed>元素,但该元素不可用。
  3. 如何获得<feed>级元素?

    我的Powershell版本是5.1.14393.953

    由于

1 个答案:

答案 0 :(得分:1)

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

  

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

您可以使用Invoke-WebRequest来阅读原始xml并访问Feed元素。实施例

$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...}