|
2 / 2 / 2
Регистрация: 14.07.2010
Сообщений: 59
|
||||||
Обработка xml в Java26.02.2012, 13:44. Показов 4789. Ответов 7
Метки нет (Все метки)
Здравствуйте, форумчане. Нужен Ваш совет. Вот в чем суть: на сервере лежит xml-файл, пользователь загружает другой xml-файл. Нужно обновить лежащий на сервере файл новыми данными из загружаемого, то есть добавить новые записи, которых нет, изменить данные в существующих записях, а в случае совпадения ничего не менять. И на выходе получить объединенных xml на сервере. Структура данных такова:
Огромное спасибо.
0
|
||||||
| 26.02.2012, 13:44 | |
|
Ответы с готовыми решениями:
7
Обработка XML с помощью Java Java - XML: упаковать файл в xml Обработка структуры и содержимого текста отличного от XML средствами XML |
|
|
|
| 26.02.2012, 14:51 | |
|
начну с конца, если использовать просто xml и без БД, то чем более будет записей тем медленнее будет процесс обработки.
процесс добавки данных разбивается на 3 этапа: 1. загрузка целевых данных(с возмжной валидацией) 2. загрузка сохранённых 3. проверка на существование 3.1. добавка если нету работать с xml можно при помощи DOM, SAX, StAX DOM грузит всё в память, поэтому рано или поздно будет OutOfMemory SAX,StAX это линейный парсинг ps: я бы хранил всё в БД и итоговый общий xml генерил бы по запросу прямо из базы, плюшки: индексированный поиск вхождения, в некоторых бд также и полнотекстовый, возможность сгенерить итоговый xml с различной сортировкой по желанию, возможность сгенерить вырезку по каким либо критериям. xpath - это средство лазить по нодам напрямик(в DOM) xslt - средство оформить данные находящиеся в xml каким либо образом для вывода куда либо
1
|
|
|
2 / 2 / 2
Регистрация: 14.07.2010
Сообщений: 59
|
|
| 26.02.2012, 15:22 [ТС] | |
|
Спасибо за ответ. Вот еще такой вопрос назрел: можно ли организовать работу проверки данных из одного xml с данными другого xml при помощи jdom? То есть например, ключевое слово title -- с попощью xpath проверить совпадение его значения из загружаемого с "серверным", если да -- то проверить на совпадение дочерние элементы и изменить их, если нет то дозаписать их в "серверный"?
Ту гугл говорит, что Sax не позволяет дозаписывать, а DOM загружает документ в память целиком. Получается без БД никак не обойтись с тем что бы не наступило переполнение памяти? И если Вам не сложно, уточните, верно ли я понимаю принципы сак и дом: сакс работает с линейным потоком, а дом работает со структурой (деревом)? Скажите, пожалуйста, процесс поиска по базе данных и обновление данных + генерация xml будет быстрее чем работа с двумя xml? Спасибо огромнющее.
0
|
|
|
|
|||||
| 26.02.2012, 15:55 | |||||
)если вдруг вам повезло и БД у вас оракл, то там вообще есть возможность хранить xml в базе с возможностью мультидоступа: 1. как к обычным таблицам с sql запросами 2. как к файловой системе с кучей xml файлов и всё это со всеми плюшками БД
1
|
|||||
|
2 / 2 / 2
Регистрация: 14.07.2010
Сообщений: 59
|
|
| 26.02.2012, 16:07 [ТС] | |
|
Как оказалось, БД использовать нельзя. Можно ли StAXом реализовать сравнение двух xml, пусть и с перезаписью для генерации общего xml-файла? Меня терзают смутные сомнения, что после сравнения каждой записи общий эксэмэль будет перезаписываться, верно? Как же будут вноситься изменения? О_о Интересно, каковы будут потери в скорости работы...
0
|
|
|
|
|||||||||||
| 26.02.2012, 16:44 | |||||||||||
|
создаём класс контейнер для полной ноды
Теперь поэкономим её: ломимся по xml при помощи StAX и ищем совпадение, не нашли, ок начинаем сначала и льём то что парсим в новый временный файл, но уже не сканим а ловим событие document end и перед ним пихаем то что хотим дописать в наш out поток, даём отработать документ энду и вуаля. Добавлено через 28 минут вот тебе шаблон на запись
1
|
|||||||||||
|
2 / 2 / 2
Регистрация: 14.07.2010
Сообщений: 59
|
|
| 26.02.2012, 18:04 [ТС] | |
|
То есть фактически преобразовать один эксэмэль в список, а затем прогонять на соотвествие со значениями узлов другого эксэмэль? Если я верно понимаю, то здесь появятся вложенные циклы?
Опять же спасибо большое Дай Вам Б-г здоровьичка.
0
|
|
|
00liberty00
|
|
| 15.04.2013, 23:09 | |
|
lykeit, как Вы реализовали обновление данных в xml по ключевому слову?
Если есть возможность, подскажите |
|
| 15.04.2013, 23:09 | |
|
Помогаю со студенческими работами здесь
8
Java class вместо xml - persistence.xml Как представить элементы java.ArrayList содержащие другие java.ArrayList в виде XML - XSL? Обработка XML обработка xml обработка xml Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|