Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » C# |
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Search | Conference rules | Album | Register | Pilots list | Profile | Log in to check your private messages | Log in

   Page 1 of 2
Go to page: 1, 2  Next | All pages
Поиск в этой теме:
Железный канал: «C#»
M.Hunter
 515 EGP


: 44
Posts: 2363
Location: Казань
Joined: 28 Mar 2002
Всем привет, знаю что место не самое подходящее для такого поста, но решил все таки попробовать Улыбка Мне нужно написать приложение для работы с xml и с MSSQL, которое умеет:
выбирать файл и проверять имя файла на соответствие формату, загружать данные из файла в БД, отображать и редактировать данные в БД, сохранять в файл из БД, вести логгирование действий.

Структура файла XML:
<File FileVersion=«Версия файла»>
<Name>Наименование файла </Name>
<DateTime>Дата изменения</DateTime>
</File>

Имя файла имеет формат «XX_YY_ZZ.xml», где:
​ XX – набор русских букв. Количество символов - не более 100;
​ YY – набор цифр. Количество символов – либо 1, либо 10, либо от 14 до 20;
​ ZZ – любые символы. Количество символов – не более 7.

Как лучше это все релизовать? Я создал приложение WPF, базу данных, сейчас читаю про LINQ, но как это все объединить смутно представляю. И как лучше проверять соответствие названия файла формату? Буду благодарен за любую помощь Улыбка
    Posted: 19:45 12-05-2015   
AnrDaemon
 866 EGP


Модератор
Рейтинг канала: 8(802)
: 37
Posts: 12332

Joined: 17 Oct 2004
M.Hunter wrote:
И как лучше проверять соответствие названия файла формату?

Лучше никак не проверять.
try
...пытаемся прочесть файл
except(bad_format)
...пропускаем
_________________
Люблю свободный полёт... :)
    Posted: 20:04 12-05-2015   
M.Hunter
 515 EGP


: 44
Posts: 2363
Location: Казань
Joined: 28 Mar 2002
AnrDaemon wrote:
M.Hunter wrote:
И как лучше проверять соответствие названия файла формату?

Лучше никак не проверять.
try
...пытаемся прочесть файл
except(bad_format)
...пропускаем

Что-то не понимаю как это будет работать, можно описать в общих чертах?
    Posted: 15:40 13-05-2015   
Minx
 1025 EGP


Модератор
Рейтинг канала: 2(19)
: 139
Posts: 10551
Location: Gomel, Belarus
Joined: 19 Nov 2005
AnrDaemon wrote:
Лучше никак не проверять.

Ему же название проверить нужно, а не читаемость с носителя.

добавлено спустя 1 минуту:
M.Hunter wrote:
И как лучше проверять соответствие названия файла формату?

Если владеете, то regexp.

Если не владеете, то программно, ручками (разбить по _ на составляющие, проверить части на требуемые свойства и т.д.).
_________________
μηδείς αγεωμέτρητος εισίτω

Last edited by Minx on 15:53 13-05-2015; edited 1 time in total
    Posted: 15:53 13-05-2015   
Grebomet
 1469 EGP


Модератор
Рейтинг канала: 8(759)
: 261
Posts: 4790
Location: Питербурх
Joined: 06 Jan 2003
Что-то я не понял, что оно из файлов грузит. Дату, что ли? Или имя файла тоже информацию ценную несет?
А то имя, которое <Name>, оно должно совпадать с именем файла, или не должно?

M.Hunter wrote:
И как лучше проверять соответствие названия файла формату?

Порезал строку по подчеркиваниям (String.Split) - проверил, что получилось ровно три куска.
Первый кусок проверяй на духовность сначала по длине (не более 100). Затем String.ToUpper + String.ToCharArray() + цикл for по всем буквам, и проверяй, что каждая буква входит в строку "АБВГДЕЁ..." (String("БУКВЫ").IndexOf(символ) >= 0).
Второй кусок проверяй на скрепы аналогичным образом, только тут легче: в верхний регистр переводить не надо, а для проверки цифр есть Char.IsDigit().
Третий кусок просто по длине проверил - и усё.

добавлено спустя 2 минуты:
Minx wrote:
Если владеете, то regexp.

И будет две проблемы: программа и регексп. Улыбка

Кстати, а в цешарпе регекспы умеют с юникодом работать?
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.

Last edited by Grebomet on 16:14 13-05-2015; edited 1 time in total
    Posted: 16:14 13-05-2015   
M.Hunter
 515 EGP


: 44
Posts: 2363
Location: Казань
Joined: 28 Mar 2002
Grebomet wrote:
Что-то я не понял, что оно из файлов грузит. Дату, что ли? Или имя файла тоже информацию ценную несет?
А то имя, которое <Name>, оно должно совпадать с именем файла, или не должно?

<Name> совпадает с названием файла. А проверять на корректность нужно только название файла в сооветствии с этим форматом:
Имя файла имеет формат «XX_YY_ZZ.xml», где:
​ XX – набор русских букв. Количество символов - не более 100;
​ YY – набор цифр. Количество символов – либо 1, либо 10, либо от 14 до 20;
​ ZZ – любые символы. Количество символов – не более 7.

добавлено спустя 3 минуты:
Grebomet wrote:
Порезал строку по подчеркиваниям (String.Split) - проверил, что получилось ровно три куска.
Первый кусок проверяй на духовность сначала по длине (не более 100). Затем String.ToUpper + String.ToCharArray() + цикл for по всем буквам, и проверяй, что каждая буква входит в строку "АБВГДЕЁ..." (String("БУКВЫ").IndexOf(символ) >= 0).
Второй кусок проверяй на скрепы аналогичным образом, только тут легче: в верхний регистр переводить не надо, а для проверки цифр есть Char.IsDigit().
Третий кусок просто по длине проверил - и усё.

Спасибо, так думаю смогу реализовать Улыбка А вообще по поводу переноса XML в SQL и обратно, с помощью LINQ это можно будет реализовать? Или есть проще варианты?

Last edited by M.Hunter on 17:08 13-05-2015; edited 1 time in total
    Posted: 17:08 13-05-2015   
Grebomet
 1469 EGP


Модератор
Рейтинг канала: 8(759)
: 261
Posts: 4790
Location: Питербурх
Joined: 06 Jan 2003
M.Hunter wrote:
А вообще по поводу переноса XML в SQL и обратно, с помощью LINQ это можно будет реализовать? Или есть проще варианты?

Да хто ж его знает - я в сишарпе не силен. Я б вообще по старинке запросы через какую-нибудь датабазную абстракцию наклепал. Благо у тебя там, похоже, все в одной таблице уместится, так что ничего особо сложного не предвидится.
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Posted: 18:09 13-05-2015   
AnrDaemon
 866 EGP


Модератор
Рейтинг канала: 8(802)
: 37
Posts: 12332

Joined: 17 Oct 2004
Minx wrote:
AnrDaemon wrote:
Лучше никак не проверять.

Ему же название проверить нужно, а не читаемость с носителя.

При чём тут читаемость с носителя?…
_________________
Люблю свободный полёт... :)
    Posted: 20:26 13-05-2015   
AVE
 300 EGP


Рейтинг канала: 5(218)
: 41
Posts: 1423
Location: Йошкар-Ола
Joined: 16 Sep 2004
Все правильно AnrDaemon говорит. Никаких проверок строк, никаких регекспов, боже упаси. Проверил название файла, скормил XmlTextReader'у (или XMLDocument'у), если тот ругнулся - файл некорректен. Вишенкой на торте будет проверка сущностей (через xpath, например, в случае XMLDocument, или в цикле для XmlTextReader) по уже распарсенному, если не соответствует (т.е. другой хмл подсунули) - тоже посылать.

Last edited by AVE on 23:23 13-05-2015; edited 1 time in total
    Posted: 23:20 13-05-2015   
Diff
 708 EGP


Модератор
Рейтинг канала: 8(861)
: 44
Posts: 4179
Location: Сферическая Земля в вакууме.
Joined: 04 Jul 2003
Этот неловкий момент, когда люди, немогущие прочитать и понять вопрос, учат как надо парсить... Улыбка
_________________
Конец света в конце тоннеля
    Posted: 02:12 14-05-2015   
AnrDaemon
 866 EGP


Модератор
Рейтинг канала: 8(802)
: 37
Posts: 12332

Joined: 17 Oct 2004
Мы прочитали и поняли вопрос. Он поставлен некорректно.
Программе должно быть пофигу, какое у файла имя. Формат совпадает? Чего тебе ЕЩЁ надо? Не совпадает? Пошёл в жопу, переходим к следующему файлу.
_________________
Люблю свободный полёт... :)
    Posted: 02:52 14-05-2015   
M.Hunter
 515 EGP


: 44
Posts: 2363
Location: Казань
Joined: 28 Mar 2002
AnrDaemon wrote:
Мы прочитали и поняли вопрос. Он поставлен некорректно.
Программе должно быть пофигу, какое у файла имя. Формат совпадает? Чего тебе ЕЩЁ надо? Не совпадает? Пошёл в жопу, переходим к следующему файлу.

Правильно, но сначала ведь нужно как-то определить совпадает формат или нет?
    Posted: 04:44 14-05-2015   
Garold
 165 EGP


: 9
Posts: 515
Location: Kusari
Joined: 01 Aug 2012
Если вдруг дружишь с PHP, то посмотри здесь http://www.pluxml.org/ . Готовый вариант. Придется поначалу поковыряться в чужом коде немало, но там уже все отлажено и оптимизировано. Правда придется еще и выучить французский.
_________________
Вопрос: если ты в глубочайшей "жопе"(по жизни), но с фонариком, можно-ли назвать такой путь светлым?
    Posted: 08:47 14-05-2015   
Diff
 708 EGP


Модератор
Рейтинг канала: 8(861)
: 44
Posts: 4179
Location: Сферическая Земля в вакууме.
Joined: 04 Jul 2003
AnrDaemon wrote:
Мы прочитали и поняли вопрос. Он поставлен некорректно.

Однако Минксу и Грибоеду хватило телепатических способностей ответить именно про то, про что спрашивал автор.

AnrDaemon wrote:
Программе должно быть пофигу, какое у файла имя. Формат совпадает?

В данном случае имя - это поле в XML, а формат - шаблон для этого имени, про проверку которого и задан вопрос. А не соответствие файла формату XML про которое вы твердите.
_________________
Конец света в конце тоннеля
    Posted: 12:50 14-05-2015   
AnrDaemon
 866 EGP


Модератор
Рейтинг канала: 8(802)
: 37
Posts: 12332

Joined: 17 Oct 2004
M.Hunter wrote:
Правильно, но сначала ведь нужно как-то определить совпадает формат или нет?

Какое "сначала" может быть до того, как ты начал читать файл? Сам то себя слышишь?
_________________
Люблю свободный полёт... :)
    Posted: 16:11 14-05-2015   
M.Hunter
 515 EGP


: 44
Posts: 2363
Location: Казань
Joined: 28 Mar 2002
AnrDaemon wrote:
M.Hunter wrote:
Правильно, но сначала ведь нужно как-то определить совпадает формат или нет?

Какое "сначала" может быть до того, как ты начал читать файл? Сам то себя слышишь?

Я в интерфейсе (Win Forms или WPF) выбираю файл XX_YY_ZZ.xml и нажимаю кнопку "Загрузить файл в базу", после этого запускается проверка на то, чтобы название файла XX_YY_ZZ.xml соответствовало формату:
 XX – набор русских букв. Количество символов - не более 100;
 YY – набор цифр. Количество символов – либо 1, либо 10, либо от 14 до 20;
 ZZ – любые символы. Количество символов – не более 7.
Если проверка не проходит, то появляется сообщение "Название файла не соответствует формату", если проверка успешна, то дальше происходит обработка xml файла и загрузка данных из него в таблицу базы данных. В базе можно редактировать таблицу, дальше, соответственно, я хочу реализовать обратный процесс выгрузки данных из таблицы в xml файл. Для специалиста это все элементарно, а я вот голову пока ломаю Улыбка Хотя многие вещи уже подсказали, спасибо.

Похоже мы просто немного о разных вещах говорим, постарался объяснить чего я хочу добиться от программы.
    Posted: 16:34 14-05-2015   
AnrDaemon
 866 EGP


Модератор
Рейтинг канала: 8(802)
: 37
Posts: 12332

Joined: 17 Oct 2004
Не надо проверять название файла. Оно никакого отношения к формату файла не имеет. Да его вообще может не быть, если тебе поток с STDIN кормят.
_________________
Люблю свободный полёт... :)
    Posted: 16:40 14-05-2015   
M.Hunter
 515 EGP


: 44
Posts: 2363
Location: Казань
Joined: 28 Mar 2002
AnrDaemon wrote:
Лучше никак не проверять.
try
...пытаемся прочесть файл
except(bad_format)
...пропускаем
______________

Здесь я кажется понял, про что ты говорил. Такой код будет проверять файл на соответствие формату xml:
Code:
try
            {
                XDocument testXML = XDocument.Load(filePath);
               
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }

Но мне-то нужно сначала проверить само название файла на соответствие формату, такую проверку нужно будет провести перед чтением файла.
    Posted: 16:42 14-05-2015   
AnrDaemon
 866 EGP


Модератор
Рейтинг канала: 8(802)
: 37
Posts: 12332

Joined: 17 Oct 2004
Ещё раз - не надо тебе проверять название файла! Просто не делай этого! Выкинь этот код.
_________________
Люблю свободный полёт... :)
    Posted: 16:43 14-05-2015   
M.Hunter
 515 EGP


: 44
Posts: 2363
Location: Казань
Joined: 28 Mar 2002
AnrDaemon wrote:
Не надо проверять название файла. Оно никакого отношения к формату файла не имеет.

Ну мне же по условию задания нужно его проверять Улыбка
    Posted: 16:45 14-05-2015   
Железный канал: «C#»
Go to page: 1, 2  Next | All pages
  
Display posts from previous: 
View previous topic | View next topic |
К списку каналов | Наверх страницы
Цитата не в тему: Ой! Какая Стрекоза прикольная ракета, оказывается... (открыл Kane)

  » C# |
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18