|
2 / 2 / 2
Регистрация: 14.07.2010
Сообщений: 59
|
||||||
Обработка xml в Java26.02.2012, 13:44. Показов 4783. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|