Powershell - 将 XML 转换为 CSV

xml

1个回答

写回答

13523867021

2025-12-10 08:00

+ 关注

XML
XML

在 Powershell 中,我们经常会遇到需要将 XML 文件转换为 CSV 格式的情况。XML 是一种用于存储和传输数据的标记语言,而 CSV 则是一种以逗号分隔数据的文件格式。将 XML 转换为 CSV 可以使数据更易于分析和处理。在本文中,我们将介绍如何使用 Powershell 将 XML 转换为 CSV,并提供一个实际案例来演示这个过程。

案例代码:

首先,我们需要加载 XML 文件并将其转换为 Powershell 中的对象。我们可以使用 Get-Content cmdlet 来读取 XML 文件,并使用 ConvertTo-XML cmdlet 将其转换为 XML 对象。下面是一个示例代码:

powershell

$XML = Get-Content -Path "C:\path\to\input.XML" | ConvertTo-XML

接下来,我们需要从 XML 对象中提取所需的数据。我们可以使用 XPath 表达式来选择特定的节点或属性。例如,如果我们想从 XML 中提取所有名为 "item" 的节点,可以使用以下代码:

powershell

$items = $XML.SelectNodes("//item")

然后,我们可以遍历这些节点,并提取所需的属性或元素。例如,如果我们想提取每个节点的 "name" 和 "value" 属性,可以使用以下代码:

powershell

$csvData = foreach ($item in $items) {

$name = $item.GetAttribute("name")

$value = $item.GetAttribute("value")

[pscustomobject]@{

Name = $name

Value = $value

}

}

最后,我们可以使用 Export-Csv cmdlet 将数据保存为 CSV 文件。以下是示例代码:

powershell

$csvData | Export-Csv -Path "C:\path\to\output.csv" -NoTypeInformation

XML 转换为 CSV 的案例代码

下面我们来演示一个实际的案例,假设我们有一个名为 "data.XML" 的 XML 文件,其中包含一些学生的信息,如姓名、年龄和成绩。我们想将这些信息转换为 CSV 格式,并保存为 "students.csv"。以下是完整的案例代码:

powershell

# 加载 XML 文件并转换为 XML 对象

$XML = Get-Content -Path "C:\path\to\data.XML" | ConvertTo-XML

# 从 XML 对象中提取学生节点

$students = $XML.SelectNodes("//student")

# 遍历学生节点,并提取姓名、年龄和成绩

$csvData = foreach ($student in $students) {

$name = $student.GetAttribute("name")

$age = $student.GetAttribute("age")

$score = $student.GetAttribute("score")

[pscustomobject]@{

Name = $name

Age = $age

Score = $score

}

}

# 将数据保存为 CSV 文件

$csvData | Export-Csv -Path "C:\path\to\students.csv" -NoTypeInformation

在上述代码中,我们首先加载了 "data.XML" 文件并将其转换为 XML 对象。然后,我们使用 XPath 表达式选择了所有的学生节点,并遍历这些节点提取了姓名、年龄和成绩。最后,我们使用 Export-Csv cmdlet 将数据保存为 "students.csv"。

在本文中,我们介绍了如何使用 Powershell 将 XML 转换为 CSV。我们使用了 Get-ContentConvertTo-XML cmdlet 将 XML 文件加载为 XML 对象,并使用 XPath 表达式选择所需的节点和属性。然后,我们使用 Export-Csv cmdlet 将数据保存为 CSV 文件。通过这种方式,我们可以更方便地处理和分析 XML 数据。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号