Парсинг xml в powershell

owen.zemlyanoi

Почетный гость
Есть xml файл, в котором есть 2 узла (работники и подразделения). Задача в том, чтобы выгрузить конкретные поля из xml в csv. Из узла работники все поля успешно прошел, кроме подразделений так, как там хранятся ссылки на GUID из узла подразделения. Как мне сделать так, чтобы напротив работника выгружать соответствующие им подразделения?
Ниже скрипт, как я проделывал работу

Код:
$path_xml = "D:\exp2moodle\company.xml"
$path_xml_department = "КоммерческаяИнформация/Классификатор/Подразделения/Подразделение"
$path_xml_worker = "КоммерческаяИнформация/ОрганизационнаяСтруктура/Работники/Работник"
$file.load($path_xml)
$xml_department = $file.SelectNodes($path_xml_department)
$xml_peoples= $file.SelectNodes($path_xml_worker)
$output = @()
$test = @()
foreach ($person in $xml_peoples) {
   #$IPphone = ($person.Контакты.Контакт | where {$_.Тип -match "IP"}).Значение
    $MailAddress = ($person.Контакты.Контакт | where {$_.Тип -match "Почта"}).Значение
    $SecondName = $person.Фамилия
    $Name = $person.Имя
    $LastName = $person.Отчество
   #$FIO = $person.Наименование
    $Function = $person.Должность
    $Status = $person.ИсторияСостояний.Состояние | where {$_.Значение -eq "Уволен"}
    if (!$Status){
    $output += [PSCustomObject]@{
       #Наименование = $FIO
        Фамилия = $SecondName
        Имя_Отчество = [String]::Concat($Name," ",$LastName)
        Должность = $Function
       #Телефон = $IPphone -replace "\D", ""
        Почта = $MailAddress
        }
    }
}

<#foreach ($dept in $xml_department)
{
    $Подразделения = $dept.Наименование

    $test += [PSCustomObject]@{
        Подразделение = $Подразделения
    }
}#>

$output | Export-csv -Path "D:\Unloading\employees.csv" -Encoding Default -Delimiter ";" -NoTypeInformation
 

Вложения

  • test.zip
    8,9 КБ · Просмотры: 2
Верх Низ