Настройки хранить в XML
От: luceus  
Дата: 20.01.06 12:54
Оценка:
Всем привет!

Есть необходимость хранить данные в XML файле. При инициализации класса нужно загружать данные из файла.

Пример файла:
<xml...

...
<table>
<field name="age" type="int"/>
<field name="name" type="string"/>
...
</table>

</xml>

Какой использовать для этого нужно модуль?


Спасибо.
Re: Настройки хранить в XML
От: bolshik Россия http://denis-zhdanov.blogspot.com/
Дата: 20.01.06 13:03
Оценка:
Здравствуйте, luceus, Вы писали:

L>Всем привет!


L>Есть необходимость хранить данные в XML файле. При инициализации класса нужно загружать данные из файла.


L>Пример файла:

L><xml...

L>...

L><table>
L> <field name="age" type="int"/>
L> <field name="name" type="string"/>
L> ...
L></table>

L></xml>


L>Какой использовать для этого нужно модуль?



L>Спасибо.


здесь
http://denis-zhdanov.blogspot.com
Re: Настройки хранить в XML
От: Пацак Россия  
Дата: 20.01.06 13:07
Оценка:
Здравствуйте, luceus, Вы писали:

L>Есть необходимость хранить данные в XML файле. При инициализации класса нужно загружать данные из файла.

L>Пример файла:
(скип)
L>Какой использовать для этого нужно модуль?

Если формат файла не критичен, то например Jakarta Commons Configuration.
Ку...
Re: Настройки хранить в XML
От: Trean Беларусь http://axamit.com/
Дата: 20.01.06 13:07
Оценка: +1
Здравствуйте, luceus, Вы писали:

L>Всем привет!


L>Есть необходимость хранить данные в XML файле. При инициализации класса нужно загружать данные из файла.


L>Пример файла:

L><xml...

L>...

L><table>
L> <field name="age" type="int"/>
L> <field name="name" type="string"/>
L> ...
L></table>

L></xml>


L>Какой использовать для этого нужно модуль?


Ну если схема файла сложнее чем key=value, то какой-нибудь JAXB, XMLBeans и т.п. Можно самому напрямую загружать используя DOM, SAX, StaX, что больше нравится. Для простых конфигов, класс Properties позволяет и в XML хранить настройки.
Re: Настройки хранить в XML
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 20.01.06 13:21
Оценка: +1
Здравствуйте, luceus, Вы писали:


L>Есть необходимость хранить данные в XML файле. При инициализации класса нужно загружать данные из файла.

L>Какой использовать для этого нужно модуль?

Рекомендую Digister
#333355130
Re: Настройки хранить в XML
От: Mycopka Россия http://mhehue.info
Дата: 20.01.06 13:25
Оценка:
Здравствуйте, luceus, Вы писали:

L>Какой использовать для этого нужно модуль?


наиболее распространены org.jdom.* и org.w3c.dom.*
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
---
With best regards и все такое :)
Re[2]: Настройки хранить в XML
От: luceus  
Дата: 20.01.06 16:41
Оценка:
Всем спасибо =)
Re: Настройки хранить в XML
От: Денис Цыплаков Россия  
Дата: 23.01.06 07:02
Оценка:
luceus пишет:

> Есть необходимость хранить данные в XML файле. При инициализации класса

> нужно загружать данные из файла.
>
> Пример файла:
> <xml...

Несколько ортогональный совет. Я пользовался в свое время половиной
из посоветованных здесь библиотек. Пришел к выводу, что если у тебя
структура XML меняется не очень часто — то делать только руками и
только SAX парсер. Делается это первый раз — день второй и
последующие — по два часа. Да Jakarta Commons Configuration.
выглядит солидно — но работает буквально в 50 раз медленнее, причем
разобраться с ней, и написать дескиптор загрузки занимает банально
больше времени, чем просто SAX.

Все эти библиотеки нужны при _очень_ разветвленной структуре файла
или когда файл сам по себе очень часто меняется.

Пользовался 3-мя разными библиотеками (Commons Configuration, JAXB,
Castor) плюнул уже два года — делаю руками через SAX

--
WBR Денис Цыплаков /* jabber UID: denis.tsyplakov@jabber.ru */
Знающий не говорит, говорящий не знает
Posted via RSDN NNTP Server 2.0
Re[2]: Настройки хранить в XML
От: luceus  
Дата: 23.01.06 09:19
Оценка:
Дельный совет!

Пришел тоже к аналогичному выводу.


Сенкс.
Re[2]: Настройки хранить в XML
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.01.06 09:38
Оценка: +1
Здравствуйте, Денис Цыплаков, Вы писали:

ДЦ> Пользовался 3-мя разными библиотеками (Commons Configuration, JAXB,

ДЦ> Castor) плюнул уже два года — делаю руками через SAX

Digester-ом не пробовал?
#333355130
Re[3]: Настройки хранить в XML
От: Денис Цыплаков Россия  
Дата: 23.01.06 10:17
Оценка:
Lucker пишет:

> ДЦ> Пользовался 3-мя разными библиотеками (Commons Configuration, JAXB,

> ДЦ> Castor) плюнул уже два года — делаю руками через SAX
>
> Digester-ом не пробовал?

О! Забыл и им пробовал. Даже XSD схему делал. Заводилось удручающе
медленно.

--
WBR Денис Цыплаков /* jabber UID: denis.tsyplakov@jabber.ru */
Знающий не говорит, говорящий не знает
Posted via RSDN NNTP Server 2.0
Re[4]: Настройки хранить в XML
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.01.06 10:25
Оценка:
Здравствуйте, Денис Цыплаков, Вы писали:

ДЦ>Lucker пишет:


>> ДЦ> Пользовался 3-мя разными библиотеками (Commons Configuration, JAXB,

>> ДЦ> Castor) плюнул уже два года — делаю руками через SAX
>>
>> Digester-ом не пробовал?

ДЦ> О! Забыл и им пробовал. Даже XSD схему делал. Заводилось удручающе

ДЦ> медленно.

Уверен что его пробовал? Нафига там XSD?
#333355130
Re[5]: Настройки хранить в XML
От: Денис Цыплаков Россия  
Дата: 23.01.06 11:03
Оценка:
Lucker пишет:

> ДЦ> О! Забыл и им пробовал. Даже XSD схему делал. Заводилось удручающе

> ДЦ> медленно.
>
> Уверен что его пробовал? Нафига там XSD

Уверен. XSD служить для проверки правильности xml файла.
Например у меня есть такой конфиг
<Module role="r1" class="a.b.c.Class1"/>
<Module role="r2" class="a.b.c.Class1"/>
<Module role="r3" class="a.b.c.Class2"/>

Я хочу быть уверен, что имя роли уникально.
можно это делать при запихивании нового модуля в хэш
модулей. А можно описать требование в XSD и при запихивании
в хэш не проверять.

В общем-то XSD штука удобная, но очень уж тормозная. Если
XML меняется не часто — то лучше статичная проверка в коде.

При частых изменениях — проверки в коде — задолбаешься править
и тут уже лучше XSD

--
WBR Денис Цыплаков /* jabber UID: denis.tsyplakov@jabber.ru */
Знающий не говорит, говорящий не знает
Posted via RSDN NNTP Server 2.0
Re[4]: Настройки хранить в XML
От: Blazkowicz Россия  
Дата: 23.01.06 11:07
Оценка:
Здравствуйте, Денис Цыплаков, Вы писали:

ДЦ> О! Забыл и им пробовал. Даже XSD схему делал. Заводилось удручающе

ДЦ> медленно.

Денис, что-то Вы путаете.
Digester это очень простой маппинг объектов (в идеале JavaBean) на XML. Основан на SAX поэтому по скорости/ресурсам практически не проигрывает рукописному решению. Строковые запросы выглядят как XPath (или XPath и есть точно уже не помню) поэтому запись самого маппинга выглядит очень компактной.

Кроме этого маппинг очень гибкий: не обязательно маппить на JavaBeans можно просто на вызовы методов. То есть даже если объекты далеки от JavaBeans и стандартых коллекций, то их все равно не сложно замапить.
Re[6]: Настройки хранить в XML
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.01.06 11:11
Оценка:
Здравствуйте, Денис Цыплаков, Вы писали:

>> Уверен что его пробовал? Нафига там XSD


ДЦ> Уверен. XSD служить для проверки правильности xml файла.


Для чего служит XSD я в курсе. Я не понимаю как он связан с Digester-ом. Нет, ну конечно xml перед разбороом в дигестере можно проверить схемой, однако если скорость этой проверки слишком удручающе выглядит, то это уж проблема парсера и верификатора, и при ручном разборе xml-я посредством SAX скорость будет выглядеть не менее удручающей.
#333355130
Re[5]: Настройки хранить в XML
От: Денис Цыплаков Россия  
Дата: 23.01.06 11:47
Оценка:
Blazkowicz пишет:

> Денис, что-то Вы путаете.

> Digester это очень простой маппинг объектов (в идеале JavaBean) на XML.
> Основан на SAX поэтому по скорости/ресурсам практически не проигрывает
> рукописному решению. Строковые запросы выглядят как XPath (или XPath и
> есть точно уже не помню) поэтому запись самого маппинга выглядит очень
> компактной.
>
> Кроме этого маппинг очень гибкий: не обязательно маппить на JavaBeans
> можно просто на вызовы методов. То есть даже если объекты далеки от
> JavaBeans и стандартых коллекций, то их все равно не сложно замапить.

Да нет не путаю я. Мапил я на вызовы методов. Если сечас подумать и
вспомнить — наверное тормоза действительно были от XSD. Если бы я
тогда просто XSD убрал бы — то заработало бы быстрее. Но что сделано
то сделано. Я убрал сразу весь Digester и отказался от XSD.

Наверное да. Внес я некую дезинформацию по поводу тормознутости
Digester-а. Прошу прощения за неточность.

Дело в общем-то прошлое — но в целом приложение мое упростилось.
Весь разбор в длинном, но простом файле. Там что-то вроде

         if ((state == HandlerState.IDLE) && (localName.equals("Group")))
         {
             state = HandlerState.GROUP;
         }
         else if ((state == HandlerState.GROUP) && 
(localName.equals("Module")))
         {
             createModule(attributes);
             state = HandlerState.MODULE;
         }


--
WBR Денис Цыплаков /* jabber UID: denis.tsyplakov@jabber.ru */
Знающий не говорит, говорящий не знает
Posted via RSDN NNTP Server 2.0
Re[2]: Настройки хранить в XML
От: korostoff Россия  
Дата: 23.01.06 12:57
Оценка:
Здравствуйте, Денис Цыплаков, Вы писали:

ДЦ> Пришел к выводу, что если у тебя

ДЦ> структура XML меняется не очень часто — то делать только руками и
ДЦ> только SAX парсер.

Если уж делать руками то по мне так StAX намного удобнее SAX'а.
Использовал его в нескольких проектах.
Скорость примерно такая же как у SAX, так как это streaming API.
Но в отличие от SAX "обходят не тебя", а ты сам вызываешь next() или nextTag().
Кстати очеь удобная штука и для генерации XML.
Re[3]: Настройки хранить в XML
От: Денис Цыплаков Россия  
Дата: 23.01.06 13:06
Оценка:
korostoff пишет:

> ДЦ> Пришел к выводу, что если у тебя

> ДЦ> структура XML меняется не очень часто — то делать только руками и
> ДЦ> только SAX парсер.
>
> Если уж делать руками то по мне так StAX намного удобнее SAX'а.
> Использовал его в нескольких проектах.
> Скорость примерно такая же как у SAX, так как это streaming API.
> Но в отличие от SAX "обходят не тебя", а ты сам вызываешь next() или
> nextTag().
> Кстати очеь удобная штука и для генерации XML.

Спасибо, посмотрю на неделе.

--
WBR Денис Цыплаков /* jabber UID: denis.tsyplakov@jabber.ru */
Знающий не говорит, говорящий не знает
Posted via RSDN NNTP Server 2.0
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.