繁体   English   中英

在 Powershell 中将 CSV 转换为 XML

[英]Convert CSV to XML in Powershell

我正在尝试将 CSV 文档转换为 XML 文档以导入到目录中。 CSV 格式如下:

 Firstname,Lastname,Email,Phone,Room,ID
 Bob,Smith,Bobs@email.com,1111,Suite 101,1
 John,Doe,John@email.com,2222,Suite 102,2

所需的 XML 输出需要如下:

<?xml version="1.0" encoding="UTF-8"?>
<TSP version="1.1">
    <contact firstname="Bob" lastname="Smith" email="Bobs@email.com" Phone="1111" room="Suite 101" id="1"/>
    <contact firstname="John" lastname="Doe" email="John@email.com" phone="2222" room="Suite 102" id="2"/>
</TSP>

使用这篇文章Powershell CSV to XML 中的信息,我能够获得以下输出,该输出很接近但缺少一些绑定:

<contact Firstname ="Bob" Lastname= "Smith Email= "Bobs@email.com Phone= "1111" Room= "Suite 101" Phone= "1111" />
<contact Firstname ="John" Lastname= "Doe Email= "John@email.com Phone= "2222" Room= "Suite 102" Phone= "2222" />

很感谢任何形式的帮助!

使用的脚本:

$docTemplate = @'
<contact $($contacts -join "`n") />
'@
$entryTemplate = @'
Firstname ="$($Phone.Firstname)" Lastname= "$($Phone.Lastname) Email= "$($Phone.Email) Phone= "$($Phone.Phone)" Room= "$($Phone.Room)" Phone= "$($Phone.Phone)"
'@

Import-Csv Test.csv -Delimiter ',' | Group-Object Id -ov grp | ForEach-Object {
  $contacts = foreach ($Phone in $_.Group) {
    $ExecutionContext.InvokeCommand.ExpandString($entryTemplate)  
  }
 $ExecutionContext.InvokeCommand.ExpandString($docTemplate) } | 
  Set-Content -LiteralPath file.xml

伊恩

本节中有很多内容使故障排除和测试变得困难。

导入-Csv Test.csv -Delimiter ',' | 组对象 ID -ov grp | ForEach-Object { $contacts =...

建议将其分解为单独的语句,中间有打印语句。 目标是弄清楚问题是否出在 1.Import-Cvs 2.Group-Object 3. 展开 entryTemplate 或相应的模板 4. 展开 docTemplate。 或相应的模板

基于输出中引号问题的另一个想法是需要转义引号等特殊字符。 我没有做太多我是 PowerShell 但特殊字符前的反斜杠是告诉解析器您希望将引号视为引号字符而不是定义字符串的指令的一种方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM