|
|
|
Железный канал: «C#» |
|
|
M.Hunter
515 EGP
    Репутация: 44 Сообщения: 2363 Откуда: Казань Зарегистрирован: 28.03.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, но как это все объединить смутно представляю. И как лучше проверять соответствие названия файла формату? Буду благодарен за любую помощь
|
|
|
AnrDaemon
864 EGP
        Рейтинг канала: 8(796) Репутация: 37 Сообщения: 12322
Зарегистрирован: 17.10.2004
 |
|
M.Hunter : |
И как лучше проверять соответствие названия файла формату?
|
Лучше никак не проверять.
try
...пытаемся прочесть файл
except(bad_format)
...пропускаем
_________________ Люблю свободный полёт... :) |
|
|
M.Hunter
515 EGP
    Репутация: 44 Сообщения: 2363 Откуда: Казань Зарегистрирован: 28.03.2002
 |
|
AnrDaemon : |
M.Hunter : |
И как лучше проверять соответствие названия файла формату?
|
Лучше никак не проверять.
try
...пытаемся прочесть файл
except(bad_format)
...пропускаем
|
Что-то не понимаю как это будет работать, можно описать в общих чертах?
|
|
|
Minx
1011 EGP
        Рейтинг канала: 2(19) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
AnrDaemon : |
Лучше никак не проверять.
|
Ему же название проверить нужно, а не читаемость с носителя.
добавлено спустя 1 минуту:
M.Hunter : |
И как лучше проверять соответствие названия файла формату?
|
Если владеете, то regexp.
Если не владеете, то программно, ручками (разбить по _ на составляющие, проверить части на требуемые свойства и т.д.).
_________________ μηδείς αγεωμέτρητος εισίτω
Последний раз редактировалось: Minx (15:53 13-05-2015), всего редактировалось 1 раз |
|
|
Grebomet
1466 EGP
      Рейтинг канала: 8(759) Репутация: 261 Сообщения: 4787 Откуда: Питербурх Зарегистрирован: 06.01.2003
 |
|
Что-то я не понял, что оно из файлов грузит. Дату, что ли? Или имя файла тоже информацию ценную несет?
А то имя, которое <Name>, оно должно совпадать с именем файла, или не должно?
M.Hunter : |
И как лучше проверять соответствие названия файла формату?
|
Порезал строку по подчеркиваниям (String.Split) - проверил, что получилось ровно три куска.
Первый кусок проверяй на духовность сначала по длине (не более 100). Затем String.ToUpper + String.ToCharArray() + цикл for по всем буквам, и проверяй, что каждая буква входит в строку "АБВГДЕЁ..." (String("БУКВЫ").IndexOf(символ) >= 0).
Второй кусок проверяй на скрепы аналогичным образом, только тут легче: в верхний регистр переводить не надо, а для проверки цифр есть Char.IsDigit().
Третий кусок просто по длине проверил - и усё.
добавлено спустя 2 минуты:
Minx : |
Если владеете, то regexp.
|
И будет две проблемы: программа и регексп.
Кстати, а в цешарпе регекспы умеют с юникодом работать?
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
Последний раз редактировалось: Grebomet (16:14 13-05-2015), всего редактировалось 1 раз |
|
|
M.Hunter
515 EGP
    Репутация: 44 Сообщения: 2363 Откуда: Казань Зарегистрирован: 28.03.2002
 |
|
Grebomet : |
Что-то я не понял, что оно из файлов грузит. Дату, что ли? Или имя файла тоже информацию ценную несет?
А то имя, которое <Name>, оно должно совпадать с именем файла, или не должно?
|
<Name> совпадает с названием файла. А проверять на корректность нужно только название файла в сооветствии с этим форматом:
Имя файла имеет формат «XX_YY_ZZ.xml», где:
XX – набор русских букв. Количество символов - не более 100;
YY – набор цифр. Количество символов – либо 1, либо 10, либо от 14 до 20;
ZZ – любые символы. Количество символов – не более 7.
добавлено спустя 3 минуты:
Grebomet : |
Порезал строку по подчеркиваниям (String.Split) - проверил, что получилось ровно три куска.
Первый кусок проверяй на духовность сначала по длине (не более 100). Затем String.ToUpper + String.ToCharArray() + цикл for по всем буквам, и проверяй, что каждая буква входит в строку "АБВГДЕЁ..." (String("БУКВЫ").IndexOf(символ) >= 0).
Второй кусок проверяй на скрепы аналогичным образом, только тут легче: в верхний регистр переводить не надо, а для проверки цифр есть Char.IsDigit().
Третий кусок просто по длине проверил - и усё.
|
Спасибо, так думаю смогу реализовать А вообще по поводу переноса XML в SQL и обратно, с помощью LINQ это можно будет реализовать? Или есть проще варианты?
Последний раз редактировалось: M.Hunter (17:08 13-05-2015), всего редактировалось 1 раз |
|
|
Grebomet
1466 EGP
      Рейтинг канала: 8(759) Репутация: 261 Сообщения: 4787 Откуда: Питербурх Зарегистрирован: 06.01.2003
 |
|
M.Hunter : |
А вообще по поводу переноса XML в SQL и обратно, с помощью LINQ это можно будет реализовать? Или есть проще варианты?
|
Да хто ж его знает - я в сишарпе не силен. Я б вообще по старинке запросы через какую-нибудь датабазную абстракцию наклепал. Благо у тебя там, похоже, все в одной таблице уместится, так что ничего особо сложного не предвидится.
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
AnrDaemon
864 EGP
        Рейтинг канала: 8(796) Репутация: 37 Сообщения: 12322
Зарегистрирован: 17.10.2004
 |
|
Minx : |
AnrDaemon : |
Лучше никак не проверять.
|
Ему же название проверить нужно, а не читаемость с носителя.
|
При чём тут читаемость с носителя?…
_________________ Люблю свободный полёт... :) |
|
|
AVE
300 EGP
  Рейтинг канала: 5(218) Репутация: 41 Сообщения: 1421 Откуда: Йошкар-Ола Зарегистрирован: 16.09.2004
 |
|
Все правильно AnrDaemon говорит. Никаких проверок строк, никаких регекспов, боже упаси. Проверил название файла, скормил XmlTextReader'у (или XMLDocument'у), если тот ругнулся - файл некорректен. Вишенкой на торте будет проверка сущностей (через xpath, например, в случае XMLDocument, или в цикле для XmlTextReader) по уже распарсенному, если не соответствует (т.е. другой хмл подсунули) - тоже посылать.
Последний раз редактировалось: AVE (23:23 13-05-2015), всего редактировалось 1 раз |
|
|
Diff
708 EGP
      Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Этот неловкий момент, когда люди, немогущие прочитать и понять вопрос, учат как надо парсить...
_________________ Конец света в конце тоннеля |
|
|
AnrDaemon
864 EGP
        Рейтинг канала: 8(796) Репутация: 37 Сообщения: 12322
Зарегистрирован: 17.10.2004
 |
|
Мы прочитали и поняли вопрос. Он поставлен некорректно.
Программе должно быть пофигу, какое у файла имя. Формат совпадает? Чего тебе ЕЩЁ надо? Не совпадает? Пошёл в жопу, переходим к следующему файлу.
_________________ Люблю свободный полёт... :) |
|
|
M.Hunter
515 EGP
    Репутация: 44 Сообщения: 2363 Откуда: Казань Зарегистрирован: 28.03.2002
 |
|
AnrDaemon : |
Мы прочитали и поняли вопрос. Он поставлен некорректно.
Программе должно быть пофигу, какое у файла имя. Формат совпадает? Чего тебе ЕЩЁ надо? Не совпадает? Пошёл в жопу, переходим к следующему файлу.
|
Правильно, но сначала ведь нужно как-то определить совпадает формат или нет?
|
|
|
Garold
165 EGP
  Репутация: 9 Сообщения: 515 Откуда: Kusari Зарегистрирован: 01.08.2012
 |
|
Если вдруг дружишь с PHP, то посмотри здесь http://www.pluxml.org/ . Готовый вариант. Придется поначалу поковыряться в чужом коде немало, но там уже все отлажено и оптимизировано. Правда придется еще и выучить французский.
_________________ Вопрос: если ты в глубочайшей "жопе"(по жизни), но с фонариком, можно-ли назвать такой путь светлым? |
|
|
Diff
708 EGP
      Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
AnrDaemon : |
Мы прочитали и поняли вопрос. Он поставлен некорректно.
|
Однако Минксу и Грибоеду хватило телепатических способностей ответить именно про то, про что спрашивал автор.
AnrDaemon : |
Программе должно быть пофигу, какое у файла имя. Формат совпадает?
|
В данном случае имя - это поле в XML, а формат - шаблон для этого имени, про проверку которого и задан вопрос. А не соответствие файла формату XML про которое вы твердите.
_________________ Конец света в конце тоннеля |
|
|
AnrDaemon
864 EGP
        Рейтинг канала: 8(796) Репутация: 37 Сообщения: 12322
Зарегистрирован: 17.10.2004
 |
|
M.Hunter : |
Правильно, но сначала ведь нужно как-то определить совпадает формат или нет?
|
Какое "сначала" может быть до того, как ты начал читать файл? Сам то себя слышишь?
_________________ Люблю свободный полёт... :) |
|
|
M.Hunter
515 EGP
    Репутация: 44 Сообщения: 2363 Откуда: Казань Зарегистрирован: 28.03.2002
 |
|
AnrDaemon : |
M.Hunter : |
Правильно, но сначала ведь нужно как-то определить совпадает формат или нет?
|
Какое "сначала" может быть до того, как ты начал читать файл? Сам то себя слышишь?
|
Я в интерфейсе (Win Forms или WPF) выбираю файл XX_YY_ZZ.xml и нажимаю кнопку "Загрузить файл в базу", после этого запускается проверка на то, чтобы название файла XX_YY_ZZ.xml соответствовало формату:
XX – набор русских букв. Количество символов - не более 100;
YY – набор цифр. Количество символов – либо 1, либо 10, либо от 14 до 20;
ZZ – любые символы. Количество символов – не более 7.
Если проверка не проходит, то появляется сообщение "Название файла не соответствует формату", если проверка успешна, то дальше происходит обработка xml файла и загрузка данных из него в таблицу базы данных. В базе можно редактировать таблицу, дальше, соответственно, я хочу реализовать обратный процесс выгрузки данных из таблицы в xml файл. Для специалиста это все элементарно, а я вот голову пока ломаю Хотя многие вещи уже подсказали, спасибо.
Похоже мы просто немного о разных вещах говорим, постарался объяснить чего я хочу добиться от программы.
|
|
|
AnrDaemon
864 EGP
        Рейтинг канала: 8(796) Репутация: 37 Сообщения: 12322
Зарегистрирован: 17.10.2004
 |
|
Не надо проверять название файла. Оно никакого отношения к формату файла не имеет. Да его вообще может не быть, если тебе поток с STDIN кормят.
_________________ Люблю свободный полёт... :) |
|
|
M.Hunter
515 EGP
    Репутация: 44 Сообщения: 2363 Откуда: Казань Зарегистрирован: 28.03.2002
 |
|
AnrDaemon : |
Лучше никак не проверять.
try
...пытаемся прочесть файл
except(bad_format)
...пропускаем
______________
|
Здесь я кажется понял, про что ты говорил. Такой код будет проверять файл на соответствие формату xml:
Код: |
try
{
XDocument testXML = XDocument.Load(filePath);
}
catch (Exception err)
{
MessageBox.Show(err.Message);
} |
Но мне-то нужно сначала проверить само название файла на соответствие формату, такую проверку нужно будет провести перед чтением файла.
|
|
|
AnrDaemon
864 EGP
        Рейтинг канала: 8(796) Репутация: 37 Сообщения: 12322
Зарегистрирован: 17.10.2004
 |
|
Ещё раз - не надо тебе проверять название файла! Просто не делай этого! Выкинь этот код.
_________________ Люблю свободный полёт... :) |
|
|
M.Hunter
515 EGP
    Репутация: 44 Сообщения: 2363 Откуда: Казань Зарегистрирован: 28.03.2002
 |
|
AnrDaemon : |
Не надо проверять название файла. Оно никакого отношения к формату файла не имеет.
|
Ну мне же по условию задания нужно его проверять
|
|
|
|
|
|
Железный канал: «C#» |
|