NickM
29-01-2025, 08:48
Уважаемые, здравствуйте!
Задался вопросом из сабжа, т.к., по какой-то причине, эти заголовки не дают корректно распарсить *.xml с помощью .SelectNodes.
Допустим, есть универсальный формат выгрузки в банк из 1с8:
<?xml version="1.0" encoding="windows-1251"?>
<СчетаПК xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://v8.1c.ru/edi/edi_stnd/109" xsi:type="СчетПК" ДатаФормирования="2025-01-29" НомерДоговора="11234567890" ДатаДоговора="2020-01-01" НаименованиеОрганизации="Муниципальное бюджетное общеобразовательное учреждение" ИНН="021001001" БИК="048073601" ИдПервичногоДокумента="8d1fbfe6-2cbd-11ef-958e-00155da20c00" НомерРеестра="5" ДатаРеестра="2024-02-05">
</СчетаПК>
Сейчас думаю, каким образом этот момент обойти, эти неймспейсы:
каким-то образом их игнорировать;
модифицировать файл и вырезать их;
Может кто-что дельное подскажет, т.к. Сам не понимаю, почему эти неймспейсы влияют на разбор файла.
Например, вот такой простенький код получения даты и № договора без удаления этих неймспейсов не выводит ничего:
[IO.Directory]::EnumerateFiles($PSScriptRoot,'*.xml') | foreach {
gci $_|%{([xml](gc $_.fullname)).SelectNodes('//СчетаПК')} | ForEach-Object {$_.НомерДоговора + " " + $_.ДатаДоговора}
}
Задался вопросом из сабжа, т.к., по какой-то причине, эти заголовки не дают корректно распарсить *.xml с помощью .SelectNodes.
Допустим, есть универсальный формат выгрузки в банк из 1с8:
<?xml version="1.0" encoding="windows-1251"?>
<СчетаПК xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://v8.1c.ru/edi/edi_stnd/109" xsi:type="СчетПК" ДатаФормирования="2025-01-29" НомерДоговора="11234567890" ДатаДоговора="2020-01-01" НаименованиеОрганизации="Муниципальное бюджетное общеобразовательное учреждение" ИНН="021001001" БИК="048073601" ИдПервичногоДокумента="8d1fbfe6-2cbd-11ef-958e-00155da20c00" НомерРеестра="5" ДатаРеестра="2024-02-05">
</СчетаПК>
Сейчас думаю, каким образом этот момент обойти, эти неймспейсы:
каким-то образом их игнорировать;
модифицировать файл и вырезать их;
Может кто-что дельное подскажет, т.к. Сам не понимаю, почему эти неймспейсы влияют на разбор файла.
Например, вот такой простенький код получения даты и № договора без удаления этих неймспейсов не выводит ничего:
[IO.Directory]::EnumerateFiles($PSScriptRoot,'*.xml') | foreach {
gci $_|%{([xml](gc $_.fullname)).SelectNodes('//СчетаПК')} | ForEach-Object {$_.НомерДоговора + " " + $_.ДатаДоговора}
}