![]() |
Каким образом игнорировать и/ или удалить xmlns в заголовке xml
Уважаемые, здравствуйте!
Задался вопросом из сабжа, т.к., по какой-то причине, эти заголовки не дают корректно распарсить *.xml с помощью .SelectNodes. Допустим, есть универсальный формат выгрузки в банк из 1с8: Код:
<?xml version="1.0" encoding="windows-1251"?>
Может кто-что дельное подскажет, т.к. Сам не понимаю, почему эти неймспейсы влияют на разбор файла. Например, вот такой простенький код получения даты и № договора без удаления этих неймспейсов не выводит ничего: Код:
[IO.Directory]::EnumerateFiles($PSScriptRoot,'*.xml') | foreach { |
Примерчик бы.
|
В сети нашёл подсказку, что можно использовать:
Код:
local-name() Код:
[IO.Directory]::EnumerateFiles($PSScriptRoot,'*.xml') | foreach { Цитата:
|
А, я проглядел, что там дальше содержимое, а не только служебные заголовки.
Можно проще: Код:
([xml](gc C:\temp\temp.xml)).счетапк |% {"$($_.номердоговора) $($_.датадоговора)"} |
|
Цитата:
1. Код:
$xml = [xml](gc test.xml -raw) Код:
$xml = [xml](gc test.xml -raw) |
Код:
([xml](gc source.xml -enc ([Text.Encoding]::GetEncoding('Windows-1251')))).childnodes[1] |
Всем спасибо!
Решил остановиться на этом и приступил к написанию не эффективного кода. Пытаюсь обойти кривую реализацию зарплатного проекта в 1с8 в централизованной бухгалтерии, когда буду выгружать кучу-сотни реестров в универсальном *.xml-формате, а после, с помощью powershell, конвертировать их в форматы трёх и более разных банков. Вроде что-то получается, но поделиться стесняюсь, код действительно ужасен. |
Время: 07:06. |
Время: 07:06.
© OSzone.net 2001-