![]() |
Модераторы: 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 -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |