Я пытаюсь преобразовать документ 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 до 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