Как стать автором
Обновить
1.8

XML *

Расширяемый язык разметки

Сначала показывать
Порог рейтинга
Уровень сложности

Парсер бинарных данных с WPF визуализацией в виде дерева структур и их полей. Структура, управляемая данными

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 3.6K

Как известно нет ничего более постоянного чем временное. Нам нужно было сделать по возможности простую программу для визуализации сложных структур бинарных данных, считанных из разных типов-версий устройств.

Адаптированный проект для публичного использования, рабочий на Гите, компилируется в простой exe-файл. Можно скачать как exe-файл, если доверяете своему антивирусу.  Надеюсь, кому-то пригодится. Но чтобы начать пользоваться надо научиться писать XАML определения вложенных структур, по которым работает парсер. Ссылка в конце статьи.

Не будет никаких модных слов, только то, что нужно для работы.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 6

Новости

Визуальный и интерактивный отчёт матрицы коллизий из Autodesk Navisworks в Microsoft Power BI

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 1.6K

В архитектурно-строительной сфере с появлением BIM-технологий всё больше приходится работать с данными, анализировать их и визуализировать для наглядности и понимания. При проектировании зданий и сооружений большое внимание уделяется качеству проектных решений, в том числе предотвращению коллизий на строительной площадке. Работая с BIM-моделями мы можем более качественно и заблаговременно получать информацию о потенциальных коллизиях. Полученные данные необходимо анализировать и принимать в работу, а также визуализировать для донесения более широкому кругу людей, в том числе.

Эта статья является более расширенной версией поста с Dzen про формирование динамической матрицы коллизий. Судя по обратной связи, многим не хватило более подробного раскрытия процесса импорта и преобразования отчёта .xml в Power BI и дальнейшая работа с данными. В этой статье я постараюсь дать более подробный гайд, но также освещу весь процесс начиная с формирования поисковых наборов (Search Sets) в Autodesk Navisworks для более целостной картины.

В конце должны получить примерно такой результат...

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 2

Как и зачем мы парсим XML

Уровень сложности Простой
Время на прочтение 15 мин
Количество просмотров 4.7K

Большинство разработчиков рано или поздно сталкиваются с XML. Этот язык разметки настолько глубоко вошел в нашу жизнь, что сложно представить систему, в которой не используется он сам или его подмножества. Разбор XML - достаточно типовая задача, но даже в ней можно выделить несколько основных подходов. В этой статье мы хотим рассказать, зачем нам потребовалось парсить XML, какие подходы мы опробовали, а заодно продемонстрировать замеры производительности для самых популярных реализаций на C++.

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 13

Стандарт JDF простыми словами

Уровень сложности Простой
Время на прочтение 15 мин
Количество просмотров 1.6K

Организация CIP4 разработала стандарт JDF для автоматизации производственных процессов в печатной индустрии. Давайте подробнее рассмотрим сам формат и сегодняшнее состояние стандарта JDF.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 2

Истории

Когда парсеры URL-адресов расходятся (CVE-2023-38633)

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 4.1K

Обнаружение и разбор уязвимости CVE-2023-38633 в librsvg, заключающейся в ситуации, когда две реализации URL-парсера (Rust и Glib) расходятся в парсинге схемы файла, создавая уязвимость к атаке обхода каталога.
Читать дальше →
Всего голосов 51: ↑51 и ↓0 +51
Комментарии 2

XML (SLD) схемы для Geoserver

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 635

Геоинформационные системы тема крайне обширная и довольно полезная. Для создания даже маленькой карты, нужно приложить большое количество сил, даже при использовании такого Opensource проекта как Geoserver. Одним из этапов создания красивой карты есть стилизация геоданных. В Geoserver для стилизации используются SLD схемы на основе XML, об этих схемах и пойдет речь.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

JSON и XML для новичков

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 16K

Краткое описание понятий json и xml, а также работа с ними на языке python.

Всем привет! Это моя первая статья, немного волнительно, но потными ладошками все же пишу. Идея написания пришла ко мне после задачи на работе, которая была связана с направлением xml - файлов в ЦБ. Думаю, многие аналитики, работающие в банке, сталкивались или еще столкнутся с подобными задачами, поэтому хочу помочь будущим поколениям.

Читать далее
Всего голосов 22: ↑11 и ↓11 0
Комментарии 9

XPath — примеры запросов в html для парсинга сайта

Время на прочтение 9 мин
Количество просмотров 11K

Парсим данные с сайтов при помощи XPath и Screaming Frog без помощи программистов. Синтаксис XPath для выбора, ссылка на удобное расширение для извлечения пути, примеры для парсинга любых данных + запись моего мастер-класса в гостях у Михаила Шакина.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 2

DesktopETL — кросс-платформенный прототип ETL-системы, или как регулярно загружать XML/JSON и сохранять в XLS/CSV

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 1.9K
image

Идея моего домашнего проекта началась с простой, на первый взгляд, задачи: с потребности конвертировать файлы формата XML в формат XLS (или CSV) для последующего анализа. И я был наивен, чтобы попробовать решение «в лоб» и с помощью Excel импортировать богатый внутренний мир SAP Business Objects, описанный в иерархической структуре XML, в табличную форму, — и примерно через час мое сознание, в очередной раз выдав исключение о переполнении памяти, подключило опыт, который намекнул, что иерархические структуры заранее неизвестной глубины проще всего обрабатывать посредством рекурсии. Так появился лаконичный скрипт на Python. Потом еще один. И еще. Потом скрипты пошли в массы среди коллег по цеху. Появились фантазии и мечты, например возможность каждые пять минут забирать XML (или JSON) из кафки (Apache Kafka), трансформировать на лету и класть, например, в DWH. Вполне ожидаемо, что была масса вопросов к скриптам и просьба «быстренько поправить». И в какой-то момент, как в том классическом анекдоте про «закопанную стюардессу», я понял, что хватит… Так и появился MVP, который я хотел бы представить в этой статье.
Читать дальше →
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 4

Под капотом Госуслуг: про СМЭВ3 от первого лица

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 17K

Привет ИТ-сообщество! Я Анастасия Пятько, аналитик-внедренец из РТЛабс. Это компания, которая развивает всем известные Госуслуги и пытается облегчить нашу бюрократическую жизнь.

Недавно мне довелось выступить на HighLoad++ 2022 с похожей темой: «СМЭВ. Сильно проще, чем кажется. Полезные советы, как стартовать интеграцию через СМЭВ3 и СМЭВ4». Организаторы знают своё дело. В зале была заинтересованная аудитория, которая задавала вопросы с неподдельным интересом. С некоторыми разговор у стенда продолжался ещё несколько часов. Так родилась идея — зафиксировать всё текстом в этой статье.

Читать далее
Всего голосов 37: ↑35 и ↓2 +33
Комментарии 39

Универсальный загрузчик XML на java. Или как загрузить файлы ГАР на 250 гб и остаться при памяти

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 4.2K

С проблемой загрузки больших XML столкнулся при переходе с КЛАДР и ФИАС на справочники ГАР - Государственный адресный реестр (Федеральная информационная адресная система).

Справочник ГАР содержит более подробную информацию чем предыдущие классификаторы. В том числе информацию по муниципальным делениям. В связи с чем справочник после распаковки занимет около 250 ГБ, что примерно в 3 раза больше чем тот же ФИАС.

Предыдущая загрузка работала на DOM-модели, т.е. весь XML-файл считывался в память. Соответственно при попытке загрузить ГАР таким же способом стали стабильно получать OutOfMemory. А значит настало время менять подход к загрузке)

Немного теории:

DOM (Document Object Model) - это стандартный интерфейс для работы с документами в формате XML (Extensible Markup Language). DOM-модель представляет XML-документ в виде дерева объектов, где каждый элемент и атрибут документа является узлом дерева.

SAX (Simple API for XML) является событийно-ориентированным API для чтения XML-документа. Он предоставляет возможность читать XML-документ последовательно и обрабатывать события, такие как начало и конец элемента, содержимое элемента и т.д.

StAX (Streaming API for XML) также является API для последовательного чтения и записи XML-документов. Он предоставляет потоковый доступ к XML-документу, позволяя читать его и записывать по частям. StAX предоставляет возможность читать и записывать XML-документы в виде потока событий, аналогично SAX, но также предоставляет возможность читать и записывать XML-документы в виде итерируемых наборов событий. StAX позволяет эффективно обрабатывать большие XML-документы и не требует реализации обработчиков событий.

Читать далее
Всего голосов 15: ↑9 и ↓6 +3
Комментарии 19

ЦУЦ — или как свести 15 тысяч товаров от разных поставщиков на коленке

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 2.2K

По мере роста бизнеса и расширения ассортимента товаров, компания столкнулась с проблемой остатков товаров и актуальными ценами. Если в начале моей работы, количество товара на сайте было в районе 3 тысяч, то на текущий момент позиций более 15 тысяч. Обновлять руками такое количество позиций нереально. С чего я начал работу по автоматизации цен и с какими трудностями столкнулся читайте в моей публикации.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 8

Проверка XML. Schematron

Уровень сложности Сложный
Время на прочтение 9 мин
Количество просмотров 4.1K

Так или иначе, все сервисы сталкиваются с задачами валидации. Часто они сводятся к простым и однотипным проверкам: заполнены ли все обязательные поля, верен ли формат телефонного номера, кредитной карты и пр. Но существуют проекты, в которых условия и правила проверок более разнообразные, да и те временами требуют серьёзного пересмотра. Внесение же изменений или создание дополнительных правил валидации требует непростых согласований и привлечения внимания нескольких команд разработчиков, обновления документации.

Недавно мне довелось поучаствовать в проекте, особую роль в котором занимают функции форматно-логического контроля входящих документов. Как следствие, у меня появились некоторые варианты решения подобных задач. Одним из них я и хочу поделиться.
Читать дальше →
Всего голосов 40: ↑39 и ↓1 +38
Комментарии 1

Ближайшие события

XML дерево на С. Пишем подготовительный код для библиотеки targetXML

Уровень сложности Сложный
Время на прочтение 18 мин
Количество просмотров 1.7K

targetXML - маленький экскурс в структуру дерева XML на примере работоспособного кода «pure C».

Здравствуй уважаемый читатель. Я пишу код на С и С++. В этой короткой статье подробно описывается мой подготовительный этап создания маленькой библиотечки на языке С, работающей с файлами xml. Рассказ об опыте такой разработки может пригодится как новичкам, любителям, так и профессионалам. К тому же в статье есть ссылка на исходный код, и вы всегда можете, при желании, заняться оптимизацией.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 3

Краткий обзор Layout XML в Android. Часть 2

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 2.1K

Возможно, что когда-нибудь Compose вытеснит XML также как Kotlin подвинул Java, но пока этого не случилось — продолжу ознакомление новичков в Android-разработке с миром Layouts.

Это продолжение статьи Краткий обзор Layout XML в Android. Часть 1

Читать далее
Всего голосов 4: ↑2 и ↓2 0
Комментарии 1

WPF: контролы лишенные внешнего вида и неразрешимая задача выбора конфигурации темплейта

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 2.4K

Мне последнее время приходится заниматься интерфейсом приложения для анализа данных, визуальным представлением данных на разных слоях анализа, а также навигацией по слоям и по данным. Соответственно, пришлось разбираться c новомодным WPF, который продвигает концепцию реализующую возможность параллельной (независимой) работы дизайнеров, занимающихся внешним видом приложения и разработчиков, реализующих поведение приложения. Дизайнер, конечно, из меня не очень (мягко говоря), а вот с реализованной концепцией программирования внешнего вида элементов управления в приложениях, мне, кажется, удалось разобраться. Собственно, вот этим пониманием некоторых аспектов концепции я и хочу поделиться, в том числе для того, чтобы расширить это понимание по результатам критики и/или обсуждения.

Возможно, кому‑то будет интересно сравнить то, что предлагает WPF, с концепциями реализованными, например, в JavaFX.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 18

Краткий обзор Layout XML в Android. Часть 1

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 3K

Пока модные и современные тестируют Jetpack Compose в новых проектах, мы с вами поговорим о старой доброй XML разметке.

Буквально по паре предложений о каждом Layout, чтобы составить общее представление об их применении. Для тех, кто хочет подробностей — прикрепил дополнительные ссылки.

Статья рассчитана на тех, кто только начинает разработку на Android, но возможно и более опытные разработчики почерпнут для себя полезные сведения.

Читать далее
Всего голосов 10: ↑4 и ↓6 -2
Комментарии 3

Работаем с XML как с массивом, версия 2

Время на прочтение 9 мин
Количество просмотров 4.9K

Всем привет.

Хочу поделиться с вами опытом в парсинге XML файлов размером до четырёх гигабайт. Что бы это происходило быстро, мы читаем файл последовательно, частями, парсим только нужные нам элементы.

В двух словах для быстрого парсинга файлов надо пользоваться XMLReader в связке с yield.

О моей реализации этой связки читайте ниже.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 31

Как я участвовал в создании информационных систем для медицины

Время на прочтение 6 мин
Количество просмотров 3.9K

В 1987-м году я окончил с красным дипломом приборостроительный факультет челябинского политехнического института по специальности "Автоматика и телемеханика", хотя планировал стать физиком-теоретиком и школу заканчивал в специализированной школе-интернате №18 при МГУ. По распределению попал в специализированное конструкторское бюро и до 1991-го года разрабатывал электронные блоки для бронетанковой техники. До сих пор считаю что полученная при этом инженерная школа является чем-то недостижимым в современных реалиях. В частности, мы с коллегами создали комбинированный аналого-цифровой программируемый комплекс, который в реальном времени проводил расчеты по математической модели объекта, описываемой системой дифференциальных уравнений 4-го порядка с 14-ью нелинейными элементами и принимал решения более 10 тысяч раз в секунду. На современных вычислителях это наверное и можно было бы сделать, но в то время мы решали задачу имея в распоряжении только набор интегральных микросхем, самой крутой из которых была ПЗУ на 2 килобайта и всё наше творчество должно было уместиться в 9 литров объёма и работать в диапазоне температур от -40 до +85.

После того как в 1991-м году страна развалилась я выбрал стезю программирования и с тех пор так или иначе связан с разработкой ПО и построением крупных информационных систем. Начинал с создания комплексного ПО и "умной кассы" для торгового центра, потом была информационная система учёта аренды муниципального имущества. Потом я вернулся в конструкторское бюро на считавшийся безнадёжным проект по созданию комплекса диагностических стендов для автоматизированного поиска неисправностей в электронных блоках в интересах иностранного заказчика. После окончания разработки я возглавлял группу разработчиков, которая сдавала эти стенды заказчику, и мы с этой задачей справились.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 12

Java. Работа с XML-документами

Время на прочтение 12 мин
Количество просмотров 18K

Привет, Хабр! Меня зовут Михаил, я SDET-специалист компании SimbirSoft. Я занимаюсь автоматизацией тестирования, в основном это работа с WEB и REST API, но на последнем проекте применял SOAP. Мне приходилось работать с сообщениями этого протокола, а именно:

— выполнять проверку наличия обязательных атрибутов и тегов SOAP сообщений;

— сравнивать содержание различных сообщений;

— вносить изменения или генерировать новые сообщения для исходящих запросов.

В своей статье я поделюсь несколькими способами работы с XML-документами. Материал будет полезен тем, кто впервые сталкивается  в работе из кода с подобными документами на Java.

Читать далее
Всего голосов 9: ↑7 и ↓2 +5
Комментарии 8

Вклад авторов