Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> largeXML 
:(
    Опции темы
DEMOVERSION
  Дата 26.10.2005, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
pvo
Дата 26.10.2005, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 7.10.2005
Где: Мск

Репутация: 2
Всего: 7



С помощью SAXParser
PM MAIL ICQ   Вверх
DEMOVERSION
Дата 26.10.2005, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.10.2005

Репутация: нет
Всего: 1



А как насчет Dom4J? А как лучше сохранять даные? Мне надо будет узнать например средние значение по-полю???
PM MAIL   Вверх
pvo
Дата 26.10.2005, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 7.10.2005
Где: Мск

Репутация: 2
Всего: 7



Цитата(DEMOVERSION @ 26.10.2005, 11:27)
А как насчет Dom4J? А как лучше сохранять даные? Мне надо будет узнать например средние значение по-полю???


Я с Dom4J не работал, но судя по названию он строит Dom дерево в памяти. При большом размере файла это будет супер не эффективно.
Насчет сохранения - тут все зависит от того, какие еще операции нужны, какое допустимо время отклика и пр.
Средние значения полей можно и при обработке XML посчитать.

PM MAIL ICQ   Вверх
DEMOVERSION
Дата 26.10.2005, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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".

Тут надо загонять наверное все в память, а потом уже проходуть по циклу??

PM MAIL   Вверх
pvo
Дата 26.10.2005, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 7.10.2005
Где: Мск

Репутация: 2
Всего: 7



Цитата(DEMOVERSION @ 26.10.2005, 11:53)
obejct-u задаются по тексту, например star="type 1-1" + end = "type 1-2".

Не понял.

Цитата(DEMOVERSION @ 26.10.2005, 11:53)
Тут надо загонять наверное все в память, а потом уже проходуть по циклу??

При разборе документа уже выполняется один цикл. Поэтому, по возможности, нужно стараться избежать второго цикла.
Сделать, например, какую-нить карту, в которой ключом будет id объекта, а в значении будет сидеть структурка с необходимыми данными. Причем подсчеты нужно стараться проводить при разборе xml, если это возможно.
PM MAIL ICQ   Вверх
DEMOVERSION
Дата 26.10.2005, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.10.2005

Репутация: нет
Всего: 1



Цитата(pvo @ 26.10.2005, 12:11)
Цитата(DEMOVERSION @ 26.10.2005, 11:53)
obejct-u задаются по тексту, например star="type 1-1" + end = "type 1-2".

Не понял.

Есть обьекты по каторым тоже надо делать МАХ,СУММ.... Их можна вычецлить только по заданому шаблону старта обьекта и конца.

Наверное в моем случае надо будет все загонять в масив, или какую-то колекцию??
PM MAIL   Вверх
pvo
Дата 26.10.2005, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 7.10.2005
Где: Мск

Репутация: 2
Всего: 7



Цитата(DEMOVERSION @ 26.10.2005, 12:19)
Их можна вычецлить только по заданому шаблону старта обьекта и конца.

понятно.


Цитата(DEMOVERSION @ 26.10.2005, 12:19)
Наверное в моем случае надо будет все загонять в масив, или какую-то колекцию??


Цитата(pvo @ 26.10.2005, 12:11)
Сделать, например, какую-нить карту, в которой ключом будет id объекта, а в значении будет сидеть структурка с необходимыми данными


PM MAIL ICQ   Вверх
Slanix
Дата 27.10.2005, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.1.2004

Репутация: нет
Всего: 1



Посмотри XQuery
Простой tutorial здесь

--------------------
Я буду искать лица Твоего, Господи Пс.26:8
PM MAIL ICQ YIM   Вверх
anonymouse
Дата 27.10.2005, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 18.8.2004

Репутация: нет
Всего: 1



Цитата
Есть обьекты по каторым тоже надо делать МАХ,СУММ.... Их можна вычецлить только по заданому шаблону старта обьекта и конца.


в этом случае посмотри надо ли тебе вообще использовать XML парсер, может быть еффективнее будет рассматривать норамльный текстовый файл. В случае с XML лучШе использовать SAXParser он работает как поток. Не о4ень удобно, но зато еффективно.
--------------------
Много чего интересного...
PM MAIL   Вверх
DEMOVERSION
Дата 27.10.2005, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.10.2005

Репутация: нет
Всего: 1



А где писать код для XQuery?
PM MAIL   Вверх
KostenkoSergey
Дата 31.10.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



Для подобных задач. SAXParser - однозначно. smile
Вот тебе пример для quick starrt, тысызыть:
Код

package test;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import java.util.*;
public class MySax extends DefaultHandler {
  public MySax(){
    super();
  }
  /**
   * EVENT HANDLERS...
   */
  public void startDocument(){
    System.out.println("Начало документа");
  }
  public void endDocument(){
    System.out.println("Конец документа");
  }
  public void startElement(String uri, String name, String qName, Attributes atts){
      System.out.print("<"+name+">");
  }
  public void endElement(String uri, String name, String qName){
     System.out.println("</"+name+">");
  }

  public void characters(char ch[], int start, int lenght){
      String s = new String(ch, start, lenght).trim();
      System.out.print(s);
  }

}

PM ICQ   Вверх
hatsumeika
Дата 1.11.2005, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.5.2005
Где: Минск

Репутация: 2
Всего: 2



можно попробовать рассмотреть XSLT.
но если опыта работы с XSLT нет, а с Java есть, лучше использовать SAX.
PM MAIL   Вверх
Slanix
Дата 2.11.2005, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.1.2004

Репутация: нет
Всего: 1



Цитата(DEMOVERSION @ 27.10.2005, 11:45)
А где писать код для XQuery?

Чтот значит где? Есть библиотеки. Как в случае и с SQL.
Я в своей работе использовал XML native data base eXist.
и писал что-то вроде такого:
Код

final XPathQueryServiceImpl service = (XPathQueryServiceImpl) 
                    collection.getService("XPathQueryService", "1.0");

String xq = " let $user := collection(\""+PATH+"\")/doc('users.xml')//users/user[@uid=\""+ uid +"\"]"
                                 + "let $rght := fn:data($user/right)"
                                 + "for $rights in document('users.xml')//rights/right[@name=$rght]"
                                 + " return"
                                 + " <user> {$user/@uid} {$user/@fullname} {$user/@service}"
                                 + "    {$rights}"
                                 + " </user>";

ResourceSet result = service.query(xq);



Это сообщение отредактировал(а) Slanix - 2.11.2005, 07:21
--------------------
Я буду искать лица Твоего, Господи Пс.26:8
PM MAIL ICQ YIM   Вверх
Andrey1
Дата 10.11.2005, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: 1
Всего: 5



Цитата(DEMOVERSION @ 27.10.2005, 11:45)
А где писать код для XQuery?
Цитата(Slanix @ 2.11.2005, 07:21)
Я в своей работе использовал XML native data base eXist.

Из своего опыта могу сказать, что если:
1) Файл до 30 Mb - можно использовать просто реализацию XQuery, например, Saxon мне очень нравится (в нем же есть и реализация XSLT).
2) 30-100 Mb (ориентировочно) - eXist вполне годится.
3) >100 Mb - Sedna Native DB.

XQuery - достаточно простой и красивый язык. На нем же можно веб-программировать.

Да, и возможно все это smile smile

Это сообщение отредактировал(а) Andrey1 - 10.11.2005, 10:59


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
onsh76
Дата 11.5.2006, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 20.11.2005
Где: Beautiful BC

Репутация: нет
Всего: 5



Меня интересует вопрос: помогает ли удаление whitespace characters при обработке/чтении больших хмл файлов.
Существуют ли тулзы для оного удаления? 
PM MAIL   Вверх
ALKS
Дата 11.5.2006, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



если струкиура XML известна и статична - JAXB. а если схема есть то вообще просто всё. 
PM   Вверх
LSD
Дата 11.5.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(onsh76 @  11.5.2006,  01:09 Найти цитируемый пост)
Меня интересует вопрос: помогает ли удаление whitespace characters при обработке/чтении больших хмл файлов.

Незначительно, если там конечно не идет по 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.
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1358 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.