![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
DEMOVERSION |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.10.2005 Репутация: нет Всего: 1 |
Скажите пожалуйста ц помошью чего можна разобрать очень большой XML. Надо взять с него даные и выполнить некоторые вучисления.
Examle XML: <root> <sample a="1 " b="3"> <sample a="1 " b="3"> <sample a="2 " b="3"> // vse strocki odinakovue, menyautsya tolko znacheniya. <sample a="1 " b="3"> <sample a="65 " b="3"> <sample a="1 " b="3"> ..... </root> XML files < 20 Mb |
|||
|
||||
pvo |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 7.10.2005 Где: Мск Репутация: 2 Всего: 7 |
С помощью SAXParser
|
|||
|
||||
DEMOVERSION |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.10.2005 Репутация: нет Всего: 1 |
А как насчет Dom4J? А как лучше сохранять даные? Мне надо будет узнать например средние значение по-полю???
|
|||
|
||||
pvo |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 7.10.2005 Где: Мск Репутация: 2 Всего: 7 |
Я с Dom4J не работал, но судя по названию он строит Dom дерево в памяти. При большом размере файла это будет супер не эффективно. Насчет сохранения - тут все зависит от того, какие еще операции нужны, какое допустимо время отклика и пр. Средние значения полей можно и при обработке XML посчитать. |
|||
|
||||
DEMOVERSION |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.10.2005 Репутация: нет Всего: 1 |
Source:
<sample a="1" b="2" type="type 1-1"> ---- <sample a="1" b="2" type="type 1-2"> 1 object <sample a="1" b="2" type="type 1-3"> ---- <sample a="1" b="2" type="type 1-1">----- <sample a="1" b="2" type="type 1-1"> <sample a="1" b="2" type="type 1-1"> 2 object <sample a="1" b="2" type="type 1-1"> <sample a="1" b="2" type="type 1-3">----- <sample a="1" b="2" type="type 1-1"> ...... .... Result: <result object="1" c="$a[i]+$b[i]" d ="MAX($a)" .....> obejct-u задаются по тексту, например star="type 1-1" + end = "type 1-2". Тут надо загонять наверное все в память, а потом уже проходуть по циклу?? |
|||
|
||||
pvo |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 7.10.2005 Где: Мск Репутация: 2 Всего: 7 |
Не понял.
При разборе документа уже выполняется один цикл. Поэтому, по возможности, нужно стараться избежать второго цикла. Сделать, например, какую-нить карту, в которой ключом будет id объекта, а в значении будет сидеть структурка с необходимыми данными. Причем подсчеты нужно стараться проводить при разборе xml, если это возможно. |
||||
|
|||||
DEMOVERSION |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.10.2005 Репутация: нет Всего: 1 |
Есть обьекты по каторым тоже надо делать МАХ,СУММ.... Их можна вычецлить только по заданому шаблону старта обьекта и конца. Наверное в моем случае надо будет все загонять в масив, или какую-то колекцию?? |
||||
|
|||||
pvo |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 7.10.2005 Где: Мск Репутация: 2 Всего: 7 |
понятно.
|
||||||
|
|||||||
Slanix |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 30.1.2004 Репутация: нет Всего: 1 |
--------------------
Я буду искать лица Твоего, Господи Пс.26:8 |
|||
|
||||
anonymouse |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 18.8.2004 Репутация: нет Всего: 1 |
в этом случае посмотри надо ли тебе вообще использовать XML парсер, может быть еффективнее будет рассматривать норамльный текстовый файл. В случае с XML лучШе использовать SAXParser он работает как поток. Не о4ень удобно, но зато еффективно. --------------------
Много чего интересного... |
|||
|
||||
DEMOVERSION |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.10.2005 Репутация: нет Всего: 1 |
А где писать код для XQuery?
|
|||
|
||||
KostenkoSergey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
Для подобных задач. SAXParser - однозначно.
![]() Вот тебе пример для quick starrt, тысызыть:
|
|||
|
||||
hatsumeika |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.5.2005 Где: Минск Репутация: 2 Всего: 2 |
можно попробовать рассмотреть XSLT.
но если опыта работы с XSLT нет, а с Java есть, лучше использовать SAX. |
|||
|
||||
Slanix |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 30.1.2004 Репутация: нет Всего: 1 |
Чтот значит где? Есть библиотеки. Как в случае и с SQL. Я в своей работе использовал XML native data base eXist. и писал что-то вроде такого:
Это сообщение отредактировал(а) Slanix - 2.11.2005, 07:21 --------------------
Я буду искать лица Твоего, Господи Пс.26:8 |
||||
|
|||||
Andrey1 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 1 Всего: 5 |
Из своего опыта могу сказать, что если: 1) Файл до 30 Mb - можно использовать просто реализацию XQuery, например, Saxon мне очень нравится (в нем же есть и реализация XSLT). 2) 30-100 Mb (ориентировочно) - eXist вполне годится. 3) >100 Mb - Sedna Native DB. XQuery - достаточно простой и красивый язык. На нем же можно веб-программировать. Да, и возможно все это ![]() ![]() Это сообщение отредактировал(а) Andrey1 - 10.11.2005, 10:59 -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
||||
|
|||||
onsh76 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 20.11.2005 Где: Beautiful BC Репутация: нет Всего: 5 |
Меня интересует вопрос: помогает ли удаление whitespace characters при обработке/чтении больших хмл файлов.
Существуют ли тулзы для оного удаления? |
|||
|
||||
ALKS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 1 Всего: 11 |
если струкиура XML известна и статична - JAXB. а если схема есть то вообще просто всё.
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Незначительно, если там конечно не идет по 1000 пробелов подряд. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |