Войти

Показать полную графическую версию : Простой парсинг xml


NickM
24-05-2023, 15:40
Уважаемые, здравствуйте!

Может кто подскажет как объединить вывод в виде "ФИО";"СумВыпл" из тега "ПерсСвФЛ"?

На форуме уже находил похожие темы и кое-что из них почерпнул:
сейчас могу посчитать итоговую сумму выплат, получить список ФИО, а вот как объединить в одну строку "ФИО";"СумВыпл" (можно в консоль, можно в *.csv) ума не хватает.

<?xml version="1.0" encoding="windows-1251"?>
<Файл
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
ИдФайл="NO_PERSSVFL_0278_0278_20230524_5E7ABEB0-9D37-4037-A51F-CC90F8630FF4"
ВерсПрог=""
ВерсФорм=""
>
<Документ
КНД="1151162"
ДатаДок="24.05.2023"
НомКорр="0"
Период="04"
ОтчетГод="2023"
КодНО="0278"
ПоМесту="214"
>
<СвНП
Тлф=""
>
<НПЮЛ
НаимОрг=""
ИННЮЛ=""
КПП=""
>
</НПЮЛ>
</СвНП>
<Подписант
ПрПодп="2"
>
<ФИО
Фамилия=""
Имя=""
Отчество=""
/>
<СвПред
НаимДок="Удостоверение"
/>
</Подписант>
<ПерсСвФЛ
ИННФЛ=""
СНИЛС=""
СумВыпл=""
>
<ФИО
Фамилия="Иванов"
Имя="Иван"
Отчество="Иванович"
/>
</ПерсСвФЛ>
</Документ>
</Файл>

Sham
24-05-2023, 19:25
наверное что-то типа этого
$xml.Файл.Документ.ПерсСвФЛ | ForEach-Object { [PSCustomObject]@{
ФИО = $_.ФИО.Фамилия, $_.ФИО.Имя, $_.ФИО.Отчество -join ' '
СумВыпл = $_.СумВыпл
}} | ConvertTo-Csv

NickM
25-05-2023, 07:48
Получилось что-то типа такого, результат устраивает:
gci $args[0]|%{([xml](gc $_.fullname)).SelectNodes('//ПерсСвФЛ')} | ForEach-Object {
$_.ФИО.Фамилия + " " + $_.ФИО.Имя + " " + $_.ФИО.Отчество + ";" + $_.СумВыпл.Replace(".",",")
} | Out-File 'FIOSUM.csv'




© OSzone.net 2001-2012