Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Конвертер XLStoXML и обратно (https://forum.zone-game.info/showthread.php?t=36615)

avemaria 10.10.2014 15:54

Конвертер XLStoXML и обратно
 
Добрый день, уважаемые форумчане.
Столкнулась с одним из, на мой взгляд, геморройных моментов по редактированию серверной части.
Многие команды, на данное время, стали вместо SQL данных запихивать все в XML. Если раньше редактировать тот же спаун-лист не составляло каких-то проблем или трудностей, то теперь иногда получается так, что чтобы изменить пакетно несколько данных, скажем по броне или предметам приходится пользоваться поиск-замена и прочими геморройностями.
Может быть XML и удобнее и быстрее для работы сервера, но.. но...
Править порой и добавлять некоторые вещи или мобов приводит к большой потере времени, сил и нервов. А также невозможности правки того же спаун-листа из админки (удаление мобов, добавление, перестановка).
Поэтому прошу местных гуру помочь в этом вопросе не только мне, но и другим пользователям, которые в процессе серверостроительства сталкиваются с этой "пустой" работой. Может быть существует какой-то автоматический механизм перегонки данных из XML в XLS (хотя бы) и обратно для пактеной обработки данных? Поделитесь, пожалуйста своими знаниями и инструментами.
ЗЫ шукала в нете - ничего адекватного не нашла.

Спасибо всем.

n3k0nation 10.10.2014 15:56

Re: Конвертер XLStoXML и обратно
 
А Вы попробуйте, как все нормальные люди использовать XPath, а не руками править :D

avemaria 10.10.2014 16:06

Re: Конвертер XLStoXML и обратно
 
Цитата:

Сообщение от Pointer*Rage (Сообщение 376819)
А Вы попробуйте, как все нормальные люди использовать XPath, а не руками править :D

а можно поподробнее?

n3k0nation 10.10.2014 16:44

Re: Конвертер XLStoXML и обратно
 
Цитата:

Сообщение от avemaria (Сообщение 376820)
а можно поподробнее?

Джава "искаробки" поддерживает XPath. В чем проблема его использовать? Все описанные Вами проблемы чуть более чем полностью отпадают.
XPath - язык запросов для работы с XML. Позволяет производить выборки и т.д.
Чуть позже обьясню, что я имею ввиду и нафига он Вам нужен.

ЗЫ: XSL просто документ для валидации XML (так же юзается для трансформации одного XML-документа в другой), как вы собираетесь его использовать для ваших задач? Причем он тут вообще? Генерировать XLS можно по существующему XML документу, да, но у меня происходит диссонанс, когда говорят про обратный случай (XSL->XML), дата с потолка возьмется? XLS ее не содержит.

Добавлено через 2 минуты
Пардон. Перепутал XLS с XSD.

Добавлено через 14 минут
Поехал длинно-пост.

Есть аж два вариант решения проблемы. Первый костыльный, второй хороший.

Вариант первый.
И так. Формат экзеля (XLS) можно экспортировать в текстовый формат, где все делится обычными токенами. Мы делаем ORM этого документа и пишем ридер.
Пример ORM:
Код:

private int id;
private String name;
private int level;
...

public int getId() {
  return id;
}
public void setId(int id) {
  this.id = id;
}
...

Ридер через обычный LineReader (либо Files НИОшный), плюс парс через регулярки, либо через StringTokenizer.
Полученные и заполненные ORM'ы мы даем на сьедение XStream, он преобразует их в XML-документ по нужным паттернам, которые можно указать вручную, что бы не переписывать существующие парсеры на сервере.
Профит.

Вариант второй.
Выкидываем все XLS и просто используем xPath для работы с XML. Это нечто вроде SQL, но для XML. :)

Вариант дополнительный, для наркоманов.
В сети есть фреймворк для работы с Windows-DOM, с помощью него можно распаршивать все эти ваши XLS/DOCX/..., но они все содержат кучу избыточной информации, плюс, я бы не стал так уж сильно доверять реализации закрытого формата.


Текущее время: 21:20. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot