xml - 如何将 Invoke-RestMethod 的响应转换为 XML?

标签 xml powershell rest read-eval-print-loop invoke-restmethod

引用 help文件“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 并将其输出(如上所述)在一行中?

最佳答案

您定位的特定 URI 返回 XML 内容,其中 Invoke-RestMethod 自动解析为 System.Xml.XmlElement 类型的 XML DOM(文档对象模型) (在本例中是此类实例的数组)。

可视化输出的一个简单方法是访问 .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'

您可以使用这些 XmlElement使用OOP技术的实例,依赖PowerShell's convenient adaptation of the XML DOM ;例如,以下内容提取 <title> 的值所有数组元素的子元素,使用 member-access enumeration :

$entries = Invoke-RestMethod -Uri https://blogs.msdn.microsoft.com/powershell/feed/
$entries.title

注意:

  • 因为目标 URI 代表 Atom feed 中,feed 条目作为 XML 元素数组返回,而不是作为单个 XML 文档返回。

  • Web 服务更常见的是返回解析为单个 XML 文档的 XML,如 [xml] ( System.Xml.XmlDocument ) 实例。

关于xml - 如何将 Invoke-RestMethod 的响应转换为 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64885215/

相关文章:

java - OkHttp 不是以 UTF8 而是以百分比编码回复我

javascript - 用于 XML 文档的 getElementById,Mozilla 扩展

asp.net - 在被 WCF 类解析之前,如何在 IIS 中即时修改不正确的 XML header (编码)?

azure - 通过脚本启用/禁用 Azure 经典云服务上的反恶意软件扩展

PowerShell:复制项目找不到路径

Java:在 Restful 服务中创建包含多个值的 JSON 响应

c# - 有没有办法在 WCF 4.0 中覆盖 DateTime 格式的 Json 序列化程序

.net - 在 Asp.net MVC 中从 ActionMethod 返回 XML 的首选方式是什么?

PHP XML 遍历出错

powershell - 从脚本中设置 Powershell 提示符