Как преобразовать ответ Invoke-RestMethod в XML?

Ссылка на файл справки для `Invoke-RestMethod:

PS /home/nicholas> 
PS /home/nicholas> $response = Invoke-RestMethod -Uri https://blogs.msdn.microsoft.com/powershell/feed/ 
PS /home/nicholas> 
PS /home/nicholas> $json = $response | ConvertTo-Json                                                   
WARNING: Resulting JSON is truncated as serialization has exceeded the set depth of 2.
PS /home/nicholas> 
PS /home/nicholas> $xml = $response | ConvertTo-Xml  
PS /home/nicholas> 
PS /home/nicholas> $xml.OuterXml                   
 

Как я могу преобразовать response к xml и вывести его, как указано выше, в одну строку?

3 ответа

Решение

Конкретный целевой URI-адрес возвращает XML- контент, который Invoke-RestMethod автоматически разбирается в XML DOM типа System.Xml.XmlElement(в данном случае - массив таких экземпляров).

Простой способ визуализировать вывод - получить доступ к .OuterXml свойство:

(Invoke-RestMethod -Uri https://blogs.msdn.microsoft.com/powershell/feed/).OuterXml

Если вам действительно нужно однострочное представление:

(Invoke-RestMethod -Uri https://blogs.msdn.microsoft.com/powershell/feed/).OuterXml -replace '\r?\n'

[xml]$testResult = (Invoke-RestMethod -Uri 'url').OuterXml$testResult.Details.Status

Если xml равно 3

Небольшой вариант:

PS /home/nicholas> 
PS /home/nicholas> $url="https://blogs.msdn.microsoft.com/powershell/feed/"                            
PS /home/nicholas> 
PS /home/nicholas> Invoke-RestMethod -Method Post -Uri $url -Body $body -ContentType 'application/xml'

который, несмотря на указанный ContentType, определенно не XMLпо крайней мере, как напечатано на консоли. Тем не менее, интересно.

Другие вопросы по тегам