PowerShell处理YouTube XML数据:如何避免生成嵌套值对象
解决PowerShell中YouTube RSS数据提取的扁平化对象生成问题
问题根源
直接通过[PSCustomObject]@{}创建对象时,$BloatedObject.Title和$BloatedObject.VideoID返回的是数组类型,最终生成的是一个包含两个数组属性的单一对象,而非每个视频对应独立对象的集合。而Select-Object会自动遍历$BloatedObject中的每个视频条目,逐个提取属性,因此能输出扁平化的对象列表。
正确解决方案
遍历$BloatedObject中的每个视频条目,为每个条目单独创建自定义对象,同时完成VideoID到完整链接的转换:
$SmallObject = foreach ($item in $BloatedObject.entry) { [PSCustomObject]@{ Title = $item.Title Link = "https://www.youtube.com/watch?v=$($item.VideoID)" } }
关键说明
$BloatedObject.entry是RSS Feed中存储单个视频数据的节点(Invoke-RestMethod解析XML后,每个视频对应一个entry子对象)- 循环遍历每个
entry,提取单条视频的Title和VideoID - 直接拼接字符串生成完整链接,比
-replace语法更简洁高效
验证输出效果
执行代码后,$SmallObject会输出扁平化的对象集合,格式如下:
Title Link ----- ---- Fast Game World Prototyping | Thomas Tobin | EPC 2023 https://www.youtube.com/watch?v=Duhdhc1JEwo KineFX: Animating Environments and Props | Mihnea Stoica | EPC 2023 https://www.youtube.com/watch?v=T8al2Uxsq70 Massive Worlds – Crafting World Partition Landscapes using Houdini | Erwin Heyms | EPC 2023 https://www.youtube.com/watch?v=baM-3JWcPJE ...
内容的提问来源于stack exchange,提问作者Ralf_Reddings
相关产品推荐
相关产品推荐

