在 PowerShell 中将 XML 转换为 CSV 文件

Rohan Timalsina 2024年2月15日
  1. 在 PowerShell 中使用 Export-Csv 将 XML 转换为 CSV
  2. 在 PowerShell 中使用 ConvertTo-Csv 将 XML 转换为 CSV
在 PowerShell 中将 XML 转换为 CSV 文件

可扩展标记语言 (XML) 文件是使用自定义标签定义文档结构的纯文本文件。它主要用于存储和共享结构化信息。

XML 文件的内容与 HTML 文件类似。

逗号分隔值 (CSV) 文件是一个带分隔符的文本文件,它允许以表格格式存储数据。每个值都由分隔符逗号或任何其他字符分隔。

本教程将教你在 PowerShell 中将 XML 文件转换为 CSV。

在 PowerShell 中使用 Export-Csv 将 XML 转换为 CSV

Export-Csv cmdlet 创建对象的 CSV 文件。它将对象转换为一系列 CSV 字符串并将它们保存到文件中。

我们创建了一个 XML 文件 website.xml

<?xml version="1.0" encoding="UTF-8"?>
<website>
<site name="DelftStack">
<content>Programming Tutorials</content>
<topic>PowerShell Howtos</topic>
<article>How to convert XML into CSV?</article>
</site>
<site name="DelftStack">
<content>Programming Tutorials</content>
<topic>Linux Howtos</topic>
<article>Delete Files Recursively in Linux</article>
</site>
</website>

你可以使用以下命令将 XML 文件转换为 CSV 文件。

[xml]$inputFile = Get-Content "C:\New\website.xml"
$inputFile.website.ChildNodes | Export-Csv "C:\New\website.csv" -NoTypeInformation -Delimiter:"," -Encoding:UTF8

Get-Content cmdlet 获取 C:\New\website.xml 文件的内容。内容对象沿管道发送到 Export-Csv cmdlet。

Export-Csv 将内容对象转换为一系列 CSV 字符串并将这些字符串保存到 C:\New\website.csv 文件中。 -Delimiter 参数指定分隔符以分隔 CSV 字符串中的属性值。

例如,,;: 等。 -Encoding 参数定义导出的 CSV 文件的编码。

查看 C:\New\website.csv 的内容。

Get-Content "C:\New\website.csv"

输出:

"name","content","topic","article"
"DelftStack","Programming Tutorials","PowerShell Howtos","How to convert XML into CSV?"
"DelftStack","Programming Tutorials","Linux Howtos","Delete Files Recursively in Linux"

在 PowerShell 中使用 ConvertTo-Csv 将 XML 转换为 CSV

ConvertTo-Csv cmdlet 将对象转换为 CSV 字符串,但不将字符串保存到文件中。你可以使用 Set-Content cmdlet 将 CSV 字符串写入文件。

Set-Content 是一个字符串处理 cmdlet,用于写入新内容或替换文件中的内容。

[xml]$inputFile = Get-Content "C:\New\website.xml"
$inputFile.website.ChildNodes | ConvertTo-Csv -NoTypeInformation -Delimiter ";" | Set-Content "C:\New\new.csv" -Encoding UTF8

内容对象沿管道发送到 ConvertTo-Csv cmdlet。ConvertTo-Csv 将内容对象转换为一系列 CSV 字符串。

字符串沿管道发送到 Set-Content cmdlet。Set-Content 将 CSV 字符串写入 C:\New\new.csv 文件。

Get-Content "C:\New\new.csv"

输出:

"name";"content";"topic";"article"
"DelftStack";"Programming Tutorials";"PowerShell Howtos";"How to convert XML into CSV?"
"DelftStack";"Programming Tutorials";"Linux Howtos";"Delete Files Recursively in Linux"

你可以使用 MS-Excel 或类似程序以表格格式查看 .csv 文件。

excel 中的 csv 文件

作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

相关文章 - PowerShell CSV

相关文章 - PowerShell XML