我在具有以下结构的提要上调用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"链接的值,因此不会返回。
通常我会说我在这一点上尝试过的东西,但由于我在互联网上什么也没找到,这些是我唯一尝试过的东西。
- 将请求内容类型更改为"text/xml" - 结果没有变化。
- 调用
$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...}