我在具有以下结构的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;因此不会返回的链接。
通常情况下,我会说我在这一点上尝试了什么,但由于我在互联网上一无所获,这些是我尝试过的唯一内容。
$xml.ParentNode
和$xml.OwnerDocument
以尝试获取<feed>
元素,但该元素不可用。如何获得<feed>
级元素?
我的Powershell版本是5.1.14393.953
由于
答案 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...}