|
22 / 18 / 4
Регистрация: 28.07.2015
Сообщений: 167
|
||||||
Парсинг XML05.02.2019, 10:13. Показов 13477. Ответов 42
Метки нет (Все метки)
Доброе утро!
Может быть вопрос плевый, но я никак не решу его. Есть файл xml (фото структуры во вложении). Как его привести к плоскому виду? т.е. создать pscustomobject где будет следующая информация Country ID , Contract Id, File name, Multipl, Source, Document type. Что мной было сделано:
0
|
||||||
| 05.02.2019, 10:13 | |
|
Ответы с готовыми решениями:
42
Парсинг xml и удаление папок |
|
Любознательный
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
|
|
| 05.02.2019, 20:50 | |
|
0
|
|
|
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
||
| 05.02.2019, 20:50 | ||
0
|
||
|
Любознательный
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
|
||||||||||
| 05.02.2019, 21:04 | ||||||||||
![]() ![]() Все равно, ведь интересно было бы почитать и возможно, применять...
0
|
||||||||||
|
Любознательный
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
|
||||||||||||
| 05.02.2019, 21:16 | ||||||||||||
|
Среднее сек. из 5 замеров, файл ~100K строк Кликните здесь для просмотра всего текста
0
|
||||||||||||
|
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
|
| 05.02.2019, 21:21 | |
|
0
|
|
|
Любознательный
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
|
||||||||||||||
| 05.02.2019, 21:45 | ||||||||||||||
Добавлено через 1 минуту Добавлено через 2 минуты Добавлено через 9 минут Вот без -a
0
|
||||||||||||||
|
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
||||||||||||
| 05.02.2019, 22:04 | ||||||||||||
![]() Ещё в одном случае создаётся [PSCustomObject][ordered], а в другом [PSCustomObject] - может тоже влияет. И ещё, не знаю обратили внимание - я приводил результаты в TotalMilliseconds, а ваши в TotalSeconds Привёл все варианты к выводу на экран таблицы (ft) и прогнал ваш файл 3 раза у себя - результаты всё равно очень сильно гуляют: Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Добавлено через 6 минут Думаю, что автор темы получил предостаточно примеров
0
|
||||||||||||
|
Любознательный
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
|
||||
| 05.02.2019, 22:22 | ||||
|
0
|
||||
|
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
||
| 05.02.2019, 22:55 | ||
|
0
|
||
|
Любознательный
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
|
||
| 05.02.2019, 22:59 | ||
|
0
|
||
|
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
|||||||||||
| 05.02.2019, 23:13 | |||||||||||
|
YuS_2, убрал ft для экономии времени - все варианты сохраняют результаты в массив и ещё немного подправил вариант, который вы назвали "greg zakharov+KDE777"
![]() Итого, теперь вариант "MIX" у меня всегда лидирует. Вывод: либо наглядность, либо скорость. greg zakharov, спасибо за наводку ![]() Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
0
|
|||||||||||
|
|
||
| 06.02.2019, 10:35 | ||
|
YuS_2,
Вот, здесь я приводил пример использования, однако не скажу, что это хороший код. Вообще про Runspace мало, где что толкового написано.
0
|
||
|
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
|||||||||||
| 06.02.2019, 14:01 | |||||||||||
|
YuS_2, операция приведения, в зависимости от того, что к чему приводится, может оказаться порой достаточно затратной задачей. Приведение к типу PSCustomObject чаще всего наименее затратная операция, так как в принципе любой объект может выступать в его роли, и, скажем, если выражение:
Хэш в PS - это полиморф. В том плане, что он вполне может выступать и как собственно хэш, и как словарь, а потому операция приведения к упорядоченному словарю по сути и не является приведением, скорее - установкой маркера сохранения порядка задаваемых значений. Однако, с уверенностью утверждать, дескать, что на времени исполнения в данном случае операции приведения не влияют совсем, довольно опрометчиво, - какие-то доли секунд, но все же отыгрывают от общей производительности. А в чем, собственно, тогда задница? А задница как раз таки в упаковке хэша. В смысле $list += ... Изначально задан массив нулевой длинны $list = @(), а операция +=, во-первых, должна перераспределить память под упаковываемый объект (что довольно затратно), во-вторых, собственно упаковать объект. Если же сделать нечто вроде:
KDE777, тогда не ответил, отвечаю сейчас. С тех пор, как обнаружил "радар" утечек куч в винде, в котором последняя фиксировала неладное как в powershell.exe, так и pwsh.exe, стал внимательнее относиться к памяти. И это не какая-то блажь, а вполне себе повод задуматься над безопасностью: переполнение в куче можно обыграть так, чтобы запустить шелл-код со всеми вытекающими. v_svitere, работу ранспейсов проще постичь через ILDasm и эксперименты с кодом. Это личное мнение, с которым некоторые MVP категорически несогласны. Не по теме: В свей книге, замороженной на этапе печати, отдельную главу посвятил детальному рассмотрению ранспейсов. Именно поэтому влом переписывать уже все ранее написанное сюда.
1
|
|||||||||||
|
Любознательный
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
|
||||||||
| 06.02.2019, 19:33 | ||||||||
$arr+=... хуже чем $arr.add('...') или $arr.append('...'), причем так значительно?
0
|
||||||||
|
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
||||||
| 06.02.2019, 20:40 | ||||||
|
Если кратко, метод Append типа StringBuilder по сути инкапсулирует небезопасный код (насколько помню, там вызывается метод wstrcpy(char*, char*, int)); метод Add типа List, если ничего не путаю, также оперирует адресами, а не значениями. Ну, а про += было написано выше что к чему. Можно лишь добавить, что наряду с упаковкой и перераспределением памяти, происходит множество callvirt, а это также тормоза. Если изменить код:
0
|
||||||
|
Любознательный
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
|
|||
| 06.02.2019, 22:35 | |||
0
|
|||
|
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
|
|
| 07.02.2019, 12:39 | |
|
YuS_2, как-то так. В принципе оператор += можно "перегрузить" через динамический метод и опкоды, в шестерке ко всему прочему можно задействовать указатели, но, во-первых, это потребует дополнительный код пусть и без создания динамической сборки в домене приложений, во-вторых, требует некоторых знаний в области IL, а последний, как известно, многие предпочитают обходить стороной. Ну и само слово "перегрузка" здесь не случайно в кавычках, ибо в сущности вышеописанный подход реализует метод, а не перегружает оператор (таковая в PS не предусмотрена).
А вообще, мы уже достаточно сильно отклонились от курса темы. Может лучше создать отдельную тему, посвященную производительности кода и попросить господ модераторов эту тему "пригвоздить"?!
0
|
|
|
Любознательный
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
|
||
| 07.02.2019, 14:38 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 26.02.2019
Сообщений: 2
|
|||||||||||
| 04.10.2019, 20:41 | |||||||||||
|
Здравствуйте!
Прошу помочь в решении похожей задачи как у ТС. Только мне необходимо получить record_id, если я запрашиваю _acme-challenge (желательно вывести только одну запись) Получаю его такими командами:
0
|
|||||||||||
| 04.10.2019, 20:41 | |
|
Парсинг XML-файла с помощью LINQ to XML Парсинг XML Парсинг Xml парсинг xml Парсинг XML Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|