You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中将自定义PSObject集合转换为指定格式XML?

在PowerShell中根据PSObject集合生成指定格式的XML文件

要实现从你的PSObject集合生成目标XML格式,可按以下步骤操作:

1. 数据分组整理

先将数据按PackageName分组,每个包内再按PackageVersion分组,确保同一个版本的文件能集中在对应的版本节点下。

2. 构建XML文档结构

使用PowerShell的XmlDocument对象构建符合要求的XML结构,包含声明、注释、根节点以及各级子节点。

完整实现代码

假设你的PSObject集合存储在变量$packageList中,执行以下代码即可生成目标XML:

# 假设PSObject集合已存储在$packageList变量中
# 按包名分组,再按版本分组
$groupedPackages = $packageList | Group-Object -Property PackageName | ForEach-Object {
    [PSCustomObject]@{
        PackageName = $_.Name
        Versions = $_.Group | Group-Object -Property PackageVersion
    }
}

# 创建XML文档
$xmlDoc = New-Object System.Xml.XmlDocument
$xmlDeclaration = $xmlDoc.CreateXmlDeclaration("1.0", "utf-8", $null)
$xmlDoc.AppendChild($xmlDeclaration) | Out-Null

# 添加注释
$comment = $xmlDoc.CreateComment("Nuget packages and their versions.")
$xmlDoc.AppendChild($comment) | Out-Null

# 创建根节点
$rootNode = $xmlDoc.CreateElement("NugetPackages")
$xmlDoc.AppendChild($rootNode) | Out-Null

# 遍历每个包,构建XML节点
foreach ($package in $groupedPackages) {
    $packageNode = $xmlDoc.CreateElement($package.PackageName)
    $rootNode.AppendChild($packageNode) | Out-Null

    # 遍历每个版本
    foreach ($versionGroup in $package.Versions) {
        # 添加版本节点
        $versionNode = $xmlDoc.CreateElement("NuGetVersion")
        $versionNode.InnerText = $versionGroup.Name
        $packageNode.AppendChild($versionNode) | Out-Null

        # 添加当前版本下的所有文件节点
        foreach ($file in $versionGroup.Group.FileName) {
            $fileNode = $xmlDoc.CreateElement("File")
            $fileNode.InnerText = $file
            $packageNode.AppendChild($fileNode) | Out-Null
        }
    }
}

# 保存XML到文件(或输出到控制台)
$xmlDoc.Save("D:\output.xml")
# 如需直接查看结果,可使用:$xmlDoc.InnerXml

代码说明

  • 分组逻辑:两次Group-Object先按包名聚合,再按版本聚合,让同版本的文件能被批量处理。
  • XML构建:用System.Xml.XmlDocument原生方法创建节点、添加内容,保证XML结构规范。
  • 输出控制:通过Save()方法将XML写入指定路径,也可通过InnerXml直接查看生成内容。

内容的提问来源于stack exchange,提问作者sero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:03:21