|
22 / 18 / 4
Регистрация: 28.07.2015
Сообщений: 167
|
||||||
Парсинг XML05.02.2019, 10:13. Показов 13526. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|