|
11 / 11 / 4
Регистрация: 12.03.2015
Сообщений: 94
|
||||||
Парсинг XML + построение дерева данных31.03.2015, 12:01. Показов 4007. Ответов 12
Метки нет (Все метки)
Здравствуйте, форумчате!
В общем, передо мной стоит такая задача: Нужно парсить несколько XML файлов и полученные данные вывести в единое дерево. Подскажите, каким образом это можно реализовать и где копать? ![]() Добавлено через 10 минут XML выглядят примерно так:
0
|
||||||
| 31.03.2015, 12:01 | |
|
Ответы с готовыми решениями:
12
Парсинг файлов формата IFC и построение дерева TreeView на основе полученных данных Построение дерева TreeView из XML |
|
11 / 11 / 4
Регистрация: 12.03.2015
Сообщений: 94
|
|
| 02.04.2015, 10:22 [ТС] | |
|
Спасибо, потихоньку разбираюсь. Но возникла проблема.
Если теги в XML написаны с большой буквы, то данные не выводятся. Добавлено через 18 часов 40 минут Разобрался немного лучше. Сначала необходимо на основе xml построить схему xsd. Далее с помощью утилиты xjc сгенерировать модели классов. Ну и Unmarshaling.
0
|
|
|
18 / 18 / 12
Регистрация: 27.03.2015
Сообщений: 72
|
|
| 02.04.2015, 10:44 | |
|
А стандартные пакеты javax.xml.*, org.w3c.org.* чем хуже?
0
|
|
|
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
|
||||||||
| 02.04.2015, 10:58 | ||||||||
1
|
||||||||
|
11 / 11 / 4
Регистрация: 12.03.2015
Сообщений: 94
|
|
| 02.04.2015, 11:07 [ТС] | |
|
На самом деле есть определенная xsd. Просто изначально был только xml-файл..
![]() Добавлено через 3 минуты Остался только вопрос, как теперь полученные данные поместить в дерево?
0
|
|
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
||||||
| 02.04.2015, 22:00 | ||||||
|
Ваш исходный XML некорректный.
Попробуйте пакет fasterxml -- jackson-jaxrs-xml-provider (вместе с jackson-databind) javax.xml.bind.annotations.* поддерживаются. Если бы вы привели правильный формат исходного XML и root для конечного файла, можно было бы привести пример гораздо конкретнее.
1
|
||||||
|
11 / 11 / 4
Регистрация: 12.03.2015
Сообщений: 94
|
|
| 03.04.2015, 08:30 [ТС] | |
|
lemegeton, спасибо! Просто исходная XML очень большая.
А каким образом можно реализовать, если на входе есть несколько xml-файлов (причем могут быть различного содержания), и необходимо выдергивать оттуда все данные. Возможно ли в процессе работы программы генерировать модель классов на основе xml-ки?
0
|
|
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|
| 03.04.2015, 13:45 | |
|
Сформулируйте, пожалуйста, задачу более полно. Слишком много информации допускающей разночтение. Например, изначально не было условия, что исходные файлы могут быть различного содержания.
Я так понимаю, что со чтением файлов вы разобрались? Покажите, пожалуйста, что у вас получилось.
0
|
|
|
11 / 11 / 4
Регистрация: 12.03.2015
Сообщений: 94
|
||||||
| 03.04.2015, 14:23 [ТС] | ||||||
|
Вот класс который парсит xml:
Класс Chrom был сгенерирован вышеописанным образом (xjc). Но предполагаю, что нужно иным образом все это делать, поскольку xml-ки могут быть разными. ParseCh вызываю при нажатии на кнопку.
0
|
||||||
|
11 / 11 / 4
Регистрация: 12.03.2015
Сообщений: 94
|
|
| 07.04.2015, 11:18 [ТС] | |
|
А вообще можно вместо конкретных данных, получать путь к этим данным (в виде дерева тегов)? и как?
0
|
|
|
11 / 11 / 4
Регистрация: 12.03.2015
Сообщений: 94
|
|||||||||||
| 17.04.2015, 11:22 [ТС] | |||||||||||
|
В общем, в данный момент получилась программка, в которой выбираем файл, открываются и парсятся xml.
Показываем дерево, в котором, при нажатии на лист дерева, выводятся в EditorPane данные, полученные из xml файла. Но пока сделал только для одного конкретного параметра из xml ( teg_data = channel1.getName(); ) Части кода:
0
|
|||||||||||
|
11 / 11 / 4
Регистрация: 12.03.2015
Сообщений: 94
|
|
| 17.04.2015, 11:43 [ТС] | |
|
То есть преобразовать метод класса Parse_Channel так, чтобы получая 2ой параметр (nName), возвращал, в соответствии этому параметру, данные из xml.
0
|
|
| 17.04.2015, 11:43 | |
|
Помогаю со студенческими работами здесь
13
Операции над бинарными деревьями: построение дерева, обход дерева, вставка и удаление элемента дерева Построение дерева на основании данных из Оракла Парсинг данных из простенького XML
XML парсинг. Получение данных из функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|