![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
EJack |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 4.9.2007 Репутация: нет Всего: нет |
Здравствуйте!
Вот собственно предыстория: На предприятие внедряется новое ПО, необходимо наладить взаимодействие с имеющимся старым прог. обеспечением, новое идет на замену старому. Но по определенным причинам не возможно сразу исключить использование старого ПО. Взаимодействие в данном случае подразумевает передачу некоторой информации между разными продуктами, весь обмен осуществляется только посредством обычных текстовых файлов. Форматов куча (более 10) часть имеют структуру похожую на xml но в большинстве просто текст, тупо отчеты например. так вот хотелось бы разработать общий механизм парсинга, а потом задать собственный набор файлов и ограничений для каждого формата и все готово! Может кто знает куда копать что посмотреть, может какие паттерны есть для этого? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
В первую очередь посмотри регулярные выражения.
-------------------- 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. |
|||
|
||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 2 Всего: 13 |
1. Формат похожий на XML это нечто странное, поскольку XML это всегда "дерево" и никак иначе. Это то и дает возможность эффективно обрабатывать "хорощо сформированные документы". То есть это либо XML, либо не XML. Лучше все-таки использвать XML там, где это возможно.
2. Если есть возможность "влезать" каким-то образом в старые программы и обеспечить обмен через web службы, это был бы предпочтительный вариант интеграции. Не важно, что часть информации имеет собственный формат и не может быть преобразована - пусть информация идет в SOAP как текстовый элемент (или двоичное "дополнение"), а принимающий узел ее разбирает. 3. Если реализовывать взаимодействие через web службы, можно на некоторое время "позатыкать дыры" паллиативными решениями, обеспечив общую и однородную инфраструктуру обмена, а потом постепенно приводить все "к общему знаменателю". 4. Если придумывать свой "универсальный" способ решения "на все - про все", потратите уйму времени и ресурсов при неясной перспективе. Впрочем это всего лишь мое личное мнение. |
|||
|
||||
EJack |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 4.9.2007 Репутация: нет Всего: нет |
Вот разъясню еще немного, в организации имеется несколько програмных комплексов от разных производителей, которые между собой совершенно не взаимодействуют.
Теперь внедряется (разрабатывается) продукт котрый должен заменить их. По требованиям их службы безопасности программы взаимодействовать ни как не могут и тем более не могут подключаться к "чужим" источникам данных (БД). Все ПО имеет единственный способ представления данных в виде файлов (txt) т.е. все отчеты и выгрузки это только txt какието имеют четкую структуру (тут я говорил что схожи с xml в плане структуры с ними проблемы нет парсинг написать не так сложно) Но другие (в большинстве) просто куча текста который ооооочень сложно поддается анализу :(. Если для каждого такого типа отчета разрабатывать свой парсер тоже время уйдет дофига, вот и хочится что то универсальное но видать придется писать и много. Всем спасибо! |
|||
|
||||
Aikus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 29.11.2007 Репутация: нет Всего: 1 |
Можно посоветовать только сделать две вещи
1. Интерфейсы для обработки событий при просмотре файлов 2. Сделать абстрактный класс, который будет вызывать эти события во время просмотра текста. Но все равно, для каждого формата нужно будет переопределять и то и др. =) |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Написать универсальный парсер, который бы мог распарсить все что хочешь - не получится.
Если формат можно описать регулярными выражениями, то можно написать универсальный парсер который будет парсить файл по заданному регулярному выражению. Не имея инфы о формате файлов, можно дать только общие советы. -------------------- 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. |
|||
|
||||
fedrbodr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.2.2010 Репутация: нет Всего: нет |
Всем привет!
Решил н5 создавать тему а добавить свой вопрос сюда) У меня есть куча разных текстовых файлов, поля в них просто заданной длинны(тоесть без раделителей) с заполнителями в виде пробелов или нулей. Вринципе мы уже написали некий побайтовый парсер.. Но терзают сомнения правильности пути? МОжет есть уже готовые скоростные библиотеки или еще какой подход парснига файлов подобного типа? Пока писал пост пришла такая идея)) МОжно использовать буферед ридер и считывать строку целиком а не побайтово а затем уже от нее делать substring-и и делить на поля... но вопрос остается: Как быстрее всего парсить текстовые файлы без разделителей где поля ограниченны количеством символов? |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Я обычно так делаю. -------------------- Lost.... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |