crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> XML как входные данные, Преимущество перед текстовым представлением или ini-файлами
AD
  опции профиля:
сообщение 16.9.2010, 13:59
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Все больше и больше убеждаюсь в преимуществе использования XML, для представления входных данных. Структуру XML понимают и не-программисты. Эти файлы могут делать любые более-менее подготовленный пользователь ПК. Преимущества я вижу следующие: жесткое формальное описание данных, ясный и относительно простой способ описания данных, возможность первичной и поверхностной проверки правильного составления файла (открыть браузером - ошибки, подобные забытому тегу и прочее - браузер не пропустит, ну естественно, с оговорками...), легкость обработки в силу существования большого количества библиотек обработки. Кто может еще что сказать по этому поводу?

Помимо XML есть, конечно же, еще такие вещи, как S-expression, JSON. Но под них библиотек обработки, к сожалению, намного меньше. Буду благодарен, если откликнитесь и дадите интересные материалы и примеры использования XML как входных данных, а не для интернет-сайтов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
5 страниц V   1 2 3 > »   
Начать новую тему
Ответов (1 - 43)
igor_bogomolov
  опции профиля:
сообщение 16.9.2010, 14:32
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Сейчас всё больше отказываются от xml в пользу YAML
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 16.9.2010, 14:56
Сообщение #3


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Угу, но вместе со всеми приимуществами появляется просто бешенная избыточность и куча болезней присущих XML
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.9.2010, 15:07
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


я уже как-то критиковал XML.
Авторы и почитатели утверждают, что XML легко читается человеком. Но это враньё рекламный трюк.
Раскрывающийся текст
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.1">
    <header creationtool="SomeTool" creationtoolversion="0.3" segtype="sentence" adminlang="EN-US" srclang="EN-US"></header>
    <body>
    <tu>
      <tuv lang="EN-US">
        <seg><bpt i="1" x="1"><B></bpt>Bold,
<bpt i="2" x="1"><I></bpt>Bold+Italic<ept i="1"></B></ept>,
Italic<ept i="2"></I></ept></seg>
      </tuv>
      <tuv lang="RU-RU">
        <seg><bpt i="1" x="1"><B></bpt>Жирный,
<bpt i="2" x="1"><I></bpt>Жирный+Наклонный<ept i="1"></B></ept>,
Наклонный<ept i="2"></I></ept></seg>
      </tuv>
    </tu>
    </body>
</tmx>
не сильно-то и поймёшь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 16.9.2010, 15:21
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


сколько не пользовал различные форматы, пришел к выводу, что XML использование подходит:
а) для хранения деревьев
б) для обмена данными между различными серверами и клиентами, где структура данных может незначительно меняться

Редактировать xml - жуть, имхо, для меня этот формат очень малочитаемый. Для обычного пользователя - текстовый .ини файл, и все, если на то пошло. Его редактировать гораздо проще.

Хотя имхо все данные "посложнее" должны делаться через редактор, и тогда уже без разницы какой там формат внутри.

Сообщение отредактировал ufna - 16.9.2010, 15:22
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 16.9.2010, 15:22
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 16.9.2010, 16:07) *
я уже как-то критиковал XML.
Авторы и почитатели утверждают, что XML легко читается человеком. Но это враньё рекламный трюк.

Юра, это не вранье, и даже не рекламный трюк. Это ведь формализованное описание. С этой точки зрения, тот код, что ты привел, вполне нормально считывается и разбирается при некоторой довольно быстрой подготовки. Да, сейчас появляются все более удобные виды формализованного описания, чем XML, но под них намного меньше библиотек.

molchanoviv, не будем голословными! ;) :) Приведи проблемы с XML. Это мне, чтобы учесть при работе с ним! :) Заранее спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.9.2010, 15:34
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AD @ 16.9.2010, 19:22) *
Приведи проблемы с XML.
* не читаемость/не проверяемость человеком.
* для считывания данных, нужно прочитать весь файл, чтобы убедится в его корректности (validating)
** невозможность читать большие файлы по частям
* избыточность данных, в разных ситуация по разному, приведённый мною пример содержит свыше 75% бесполезной информации
** низкая скорость чтения, повышенная загрузка канала передачи данных

П.С.
вроде есть только одно приемущество - возможность обработки программой (100% поддерживающей стандарт) любых данных
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 16.9.2010, 15:43
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 16.9.2010, 16:34) *
* для считывания данных, нужно прочитать весь файл, чтобы убедится в его корректности (validating)
** невозможность читать большие файлы по частям
* избыточность данных, в разных ситуация по разному, приведённый мною пример содержит свыше 75% бесполезной информации

О. Спасибо. Буду знать и учитывать.
Цитата(Litkevich Yuriy @ 16.9.2010, 16:34) *
* не читаемость/не проверяемость человеком.
А это спорный вопрос. Смотря как именно созданные файлы. Вообще я лично использую простейший вариант XML, которые структуры данного вида не предуматривает:
 <Submenu ItemName = "Open Databases" />

То есть можно писать только так:
<Submenu>
        <ItemName> Open Databases </ItemName>
</Submenu>

А вообще данные проблемы присущи и другим указанным тут форматам?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 16.9.2010, 16:09
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Сразу скажу, я не являюсь фанатом XML-я, формат как формат, не хуже прочих. На мой взгляд XML вначале незаслуженно превозносили, а теперь незаслуженно демонизируют. Просто его надо использоавать там, где надо.
Первое и главное, не надо заставлять человека читать и писать XML руками. XML - машинный формат, с возможностью знающему человеку иногда подправить его руками.

Цитата(Litkevich Yuriy @ 16.9.2010, 16:34) *
* не читаемость/не проверяемость человеком.
У других с читаемостью то же не очень, в JSON-е от скобок в глазах аж. рябит. И уж если профунькал скобку, умаешся искать где, в XML по крайне мере закрывающий тег можно найти через Ctrl+F.

Цитата(Litkevich Yuriy @ 16.9.2010, 16:34) *
* для считывания данных, нужно прочитать весь файл, чтобы убедится в его корректности (validating)
** невозможность читать большие файлы по частям
А у других, как ты убедишься в корректности не прочитав весь файл, может в конце скобки или запятой не хватает? Большой XML можно разбить на несколько и объединить через стандартный include. Я не в курсе, у перечисленных альтернативных форматов есть похожий стандартный механизм?

Цитата(Litkevich Yuriy @ 16.9.2010, 16:34) *
* избыточность данных, в разных ситуация по разному, приведённый мною пример содержит свыше 75% бесполезной информации
** низкая скорость чтения, повышенная загрузка канала передачи данных
Это да, здесь спорить не буду проблема есть, и прочие форматы однозначно здесь выигрывают.


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.9.2010, 17:02
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Sokoloff @ 16.9.2010, 20:09) *
А у других, как ты убедишься в корректности не прочитав весь файл, может в конце скобки или запятой не хватает?
например, в ini-файле можно вообще построчно читать или по группе.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 16.9.2010, 17:35
Сообщение #11


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(Litkevich Yuriy @ 16.9.2010, 18:02) *
Цитата(Sokoloff @ 16.9.2010, 20:09) *
А у других, как ты убедишься в корректности не прочитав весь файл, может в конце скобки или запятой не хватает?
например, в ini-файле можно вообще построчно читать или по группе.

И что? XML тоже можно через SAX читать, и если первый тег некорректный выдавать ошибку.
И вообще не корректно сравнивать двухуровневый ini с многоуровневыми форматами. Если надо просто сохранить ключ=значение, то XML не нужен, а если сложную структуру данных? Вон как в openssl извратились с openssl.cnf, чтоб его разобрать надо обладать "сокровенным знанием", знать имя начальной секции, знать что в этой секции такой-то параметр означает имя "вложенной" секции и.т.д. Уж лучше бы использовали XML.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.9.2010, 18:05
Сообщение #12


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


иерархический инишник:
[first]
bla=bla-bla

[firs/subfirst]
bla=bla-bla

[firs/subsecond]
bla=bla-bla
вообще ничего сложного
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 16.9.2010, 19:03
Сообщение #13


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(Litkevich Yuriy @ 16.9.2010, 19:05) *
иерархический инишник:
[first]
bla=bla-bla

[firs/subfirst]
bla=bla-bla

[firs/subsecond]
bla=bla-bla
вообще ничего сложного


Я не говорю, что в ini нельзя сохранить вложенные данные, но он создавался не для этого.

Во что это превратится при пяти уровнях вложенности? И опять это надо знать что в этом конкретном ini-шнике firs/subfirst это подсекция от firs, и если я переименовал firs, то мне надо переименовывать все firs/ХХХ. Каждую технологию надо применять там, где она оптимальна. Хранить простые конфиги в XML - бред, но и использовать ini для структурированной информации то же не правильно. Я приводил пример не удачного, на мой взгляд, применения ini для многоуровневых настроек в openssl.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.9.2010, 10:32
Сообщение #14


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Я просто понял, что для таких вещей, как представление меню - XML подходит как нельзя лучше. Потом для описания каких-нибудь табличных данных его тоже использовать более удобно, чем INI. Повторюсь, было бы побольше разборщиков всяких YAML, то использовал бы его, возможно, точнее так, предложил бы использовать их! INI в данной области использовал раньше - крайне неудобно и в плане заполнения и в плане использования. Разборщиков INI знаю только под WIN32, а вот в Qt, boost их не видел.

Сообщение отредактировал AD - 17.9.2010, 10:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.9.2010, 11:05
Сообщение #15


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AD @ 17.9.2010, 14:32) *
а вот в Qt
а QSettings ???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.9.2010, 11:57
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 17.9.2010, 12:05) *
QSettings ???

Извращение еще то! ;) При работе с реестром - очень удобно, а с ини-файлами - нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 17.9.2010, 12:01
Сообщение #17


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(AD @ 17.9.2010, 12:57) *
Извращение еще то! ;) При работе с реестром - очень удобно, а с ини-файлами - нет.

не будь голословным, обоснуй уже чт ли.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.9.2010, 13:25
Сообщение #18


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(kwisp @ 17.9.2010, 13:01) *
не будь голословным, обоснуй уже чт ли.

Это сложно. Работал давно, детали уже не помню.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.9.2010, 13:49
Сообщение #19


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AD @ 17.9.2010, 17:25) *
Это сложно.
конечно сложно. Т.к. работать проще чем с QSettings уже наверное не возможно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.9.2010, 14:22
Сообщение #20


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 17.9.2010, 14:49) *
конечно сложно. Т.к. работать проще чем с QSettings уже наверное не возможно

Юра, вопрос не в этом, в принципе. Основной минус ини-файлов: чересчур ограниченный вид представления данных. Не все получится с помощью этого формата отобразить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 17.9.2010, 14:28
Сообщение #21


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(AD @ 17.9.2010, 15:22) *
Не все получится с помощью этого формата отобразить.

а всё отображать и не надо.
каждый формат для определённых целей.
не стоит принимать как панацею ни xml ни ini.

настройки всех программ храню в ini, много сталкивался с ним в linux - легко и удобно, просто дешево и сердито если хотите. но когда кто-то хранит 10 настроек своей проги в xml я этого не понимаю. не понимаю фирму самсунг, которая хранит телефонную книгу своих телефонов в xml. он xml - для других целей с которыми я в плотную не работал. но недостатков он не лишен и они существенны.
то что нет подходящего парсера - не аргумент в сторону выбора формата!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.9.2010, 14:33
Сообщение #22


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(kwisp @ 17.9.2010, 15:28) *
а всё отображать и не надо.

Что значит не надо? Нужную для работы информацию, которую править мог бы непрограммист! ;)

Цитата(kwisp @ 17.9.2010, 15:28) *
каждый формат для определённых целей.
не стоит принимать как панацею ни xml ни ini.
Это понятно. :) С этим и не спорю. ;)

Цитата(kwisp @ 17.9.2010, 15:28) *
настройки всех программ храню в ini, много сталкивался с ним в linux - легко и удобно, просто дешево и сердито если хотите. но когда како-то хранит 10 настроек своей проги в xml я этого не понимаю. не понимаю фирму самсунг, которая хранит телефонную книгу своих телефонов в xml. он xml - для других целей с которыми я в плотную не работал. но недостатков он не лишен и они существенны.
то что нет подходящего парсера - не аргумент в сторону выбора формата!

Ну... настроек не 10, во много больше. ;) Телефонная книга в виде XML, вполне удобна. Единственное, то, что Юра указал про скорость работы и один файл, смущает для телефонной книги.

Сообщение отредактировал AD - 17.9.2010, 14:33
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.9.2010, 15:09
Сообщение #23


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


если нужно, чтобы человек имел возможность отредактировать настройки руками - INI-файл (QSettings)
если нужно хитро хранить информацию - SQLite
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.9.2010, 15:35
Сообщение #24


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 17.9.2010, 16:09) *
если нужно хитро хранить информацию - SQLite

Юра, сразу возникает вопрос: если нужно хранить информацию нетривиального вида так, чтобы пользователь смог поправить? Вопрос не холивара ради, а для дела.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 17.9.2010, 15:59
Сообщение #25


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


а что есть информация нетривиального вида, которую пользователь мог поправить, и которую так сложно записать? Пример какой нибудь, пожалуйста.


QSettings работает с .ini идеально, имхо. Единственное, чего нельзя делать - это "комментарии", которые некоторые товарищи добавляют в структуру этого файла.

В этом .ini я постоянно храню кучи настроек, вплоть до "сейвов" GV систем.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 17.9.2010, 16:24
Сообщение #26


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(AD @ 17.9.2010, 16:35) *
Цитата(Litkevich Yuriy @ 17.9.2010, 16:09) *
если нужно хитро хранить информацию - SQLite

Юра, сразу возникает вопрос: если нужно хранить информацию нетривиального вида так, чтобы пользователь смог поправить? Вопрос не холивара ради, а для дела.

А что за информация "нетривиального вида"?

Сообщение отредактировал Sokoloff - 17.9.2010, 16:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.9.2010, 16:28
Сообщение #27


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Я могу весь код привести. ;) Вот подчиненная сделала файлик:
Раскрывающийся текст
<?xml version="1.0" encoding="windows-1251" ?>

<MenuBar>
  <Menu>
    <MenuName>
      <Eng>File</Eng> <Rus>Файл</Rus>
    </MenuName>
    <SubmenuList>
      <Submenu>
        <ItemName>
          <Eng>Open LOG-files</Eng> <Rus>Открыть LOG-файлы</Rus>
        </ItemName>
        <HotKey>Ctrl+O</HotKey>
        <Description>
          <Eng>Open log or xml files</Eng> <Rus>Открыть log-файл или xml-файлы</Rus>
        </Description>
        <ImagePath>./Images/open.png</ImagePath>
        <Checkable>false</Checkable>  
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Open Databases</Eng> <Rus>Открыть базу данных</Rus>
        </ItemName>
        <HotKey>Ctrl+Shift+O</HotKey>
        <Description>
          <Eng>Open databases</Eng> <Rus>Открыть базу данных</Rus>
        </Description>
        <ImagePath>./Images/openDB.png</ImagePath>
        <Checkable>false</Checkable>  
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Open Charts</Eng> <Rus>Открыть карты</Rus>
        </ItemName>
        <HotKey>Ctrl+Alt+O</HotKey>
        <Description>
          <Eng>Open charts</Eng> <Rus>Открыть карты</Rus>
        </Description>
        <ImagePath>./Images/openCharts.png</ImagePath>
        <Checkable>false</Checkable>  
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Save Report</Eng> <Rus>Сохранить отчет</Rus>
        </ItemName>
        <HotKey>Ctrl+S</HotKey>
        <Description>
          <Eng>Save report</Eng> <Rus>Сохранить отчет</Rus>
        </Description>
        <ImagePath>./Images/save.png</ImagePath>
        <Checkable>false</Checkable>  
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Save Report As...</Eng> <Rus>Сохранить отчет как</Rus>
        </ItemName>
        <HotKey>Ctrl+Shift+S</HotKey>
        <Description>
          <Eng>Save report in file</Eng> <Rus>Сохранить отчет в файле</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>false</Checkable>  
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Load Flight Plan</Eng> <Rus>Загрузить план полетов</Rus>
        </ItemName>
        <HotKey>Ctrl+L</HotKey>
        <Description>
          <Eng>Load flight plan</Eng> <Rus>Загрузить план полетов</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>false</Checkable>  
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Unload Flight Plan</Eng> <Rus>Отгрузить план полетов</Rus>
        </ItemName>
        <HotKey>Ctrl+Shift+L</HotKey>
        <Description>
          <Eng>Unload flight plan</Eng> <Rus>Отгрузить план полетов</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>false</Checkable>  
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Allow to load XML-File</Eng> <Rus>Позволить загружать XML-файл</Rus>
        </ItemName>
        <HotKey></HotKey>
        <Description>
          <Eng>Allow to load xml-file</Eng> <Rus>Позволить загружать xml-файл</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>true</Checkable>  
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Allow to Load LOG-Files</Eng> <Rus>Позволить загружать LOG-файлы</Rus>
        </ItemName>
        <HotKey></HotKey>
        <Description>
          <Eng>Allow to load log-files</Eng> <Rus>Позволить загружать LOG-файлы</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>true</Checkable>  
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Exit</Eng> <Rus>Выход</Rus>
        </ItemName>
        <HotKey>Alt+X</HotKey>
        <Description>
          <Eng>Exit from program</Eng> <Rus>Выход из программы</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>false</Checkable>  
      </Submenu>
    </SubmenuList>
  </Menu>
  <Menu>
    <MenuName>
      <Eng>Chart</Eng> <Rus>Карта</Rus>
    </MenuName>
    <SubmenuList>
      <Submenu>
        <ItemName>
          <Eng>Show Chart DCW</Eng> <Rus>Открыть карту DCW</Rus>
        </ItemName>
        <HotKey>Ctrl+W</HotKey>
        <Description>
          <Eng>Show DCW chart or charts</Eng> <Rus>Показать карту DCW</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>true</Checkable>    
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Show Chart DEM</Eng> <Rus>Открыть карту DEM</Rus>
        </ItemName>
        <HotKey>Ctrl+D</HotKey>
        <Description>
          <Eng>Show DEM chart or charts</Eng> <Rus>Показать карту DEM</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>true</Checkable>    
      </Submenu>
      <Submenu>
        <InnerMenu>
          <MenuName>
            <Eng>DCW Options</Eng> <Rus>Опции DCW</Rus>
          </MenuName>
        <SubmenuList>
            <Submenu>
              <ItemName>
                <Eng>Filter</Eng> <Rus>Фильтр</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>
                <Eng>Switch on filter</Eng> <Rus>Включить фильтр</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Grid</Eng> <Rus>Сетка</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>
                <Eng>Switch on grid</Eng> <Rus>Включить сетку</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Aeronautical</Eng>
                <Rus>Аэропорты</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>
                <Eng>Switch on aeronautical</Eng>
                <Rus>Включить аэропорты</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Drainage Text</Eng>
                <Rus>Названия рек, озер</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>
                <Eng>Switch on drainage text</Eng>
                <Rus>Включить названия рек, озер</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Hypsography</Eng> <Rus>Линии равных высот</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>
                <Eng>Switch on hypsography</Eng> <Rus>Включить линии равных высот</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Land Cover</Eng> <Rus>Месторождения, болота</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>                                                        
                <Eng>Switch on land cover</Eng> <Rus>Включить месторождения, болота</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Oceans Line</Eng> <Rus>Береговые линии</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>                                                        
                <Eng>Switch on oceans line</Eng> <Rus>Включить береговые линии, границы стран</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Oceans Text</Eng> <Rus>Названия морей, стран</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>                                                        
                <Eng>Switch on oceans text</Eng> <Rus>Включить названия стран, морей</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Populated Places</Eng> <Rus>Населенные пункты</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>                                                        
                <Eng>Switch on populated places</Eng> <Rus>Включить населенные пункты</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Text Populated Places</Eng> <Rus>Названия населенных пунктов</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>                                                        
                <Eng>Switch on populated places text</Eng> <Rus>Включить названия населенных пунктов</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Roads</Eng> <Rus>Дороги</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>                                                        
                <Eng>Switch on roads</Eng> <Rus>Включить дороги</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Utilities Line</Eng> <Rus>ЛЭП, трубопроводы</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>                                                        
                <Eng>Switch on utilities line</Eng> <Rus>Включить ЛЭП, трубопроводы</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Vegetation</Eng> <Rus>Растительность</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>                                                        
                <Eng>Switch on vegetation</Eng> <Rus>Включить растительность</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
          </SubmenuList>
        </InnerMenu>
      </Submenu>
      <Submenu>
        <InnerMenu>
          <MenuName>
            <Eng>DEM Options</Eng> <Rus>Опции DEM</Rus>
          </MenuName>
          <SubmenuList>
            <Submenu>
              <ItemName>
                <Eng>DEM-Smooth</Eng> <Rus>DEM-Сглаживания</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>
                <Eng>Show DEM Smooth chart or charts</Eng> <Rus>Показать карту сглаженного DEM</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>6-Second DEM</Eng> <Rus>Шестисекундный DEM</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>
                <Eng>Show DEM 6-second chart or charts</Eng> <Rus>Показать карту 6-секундного DEM</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
          </SubmenuList>
        </InnerMenu>
      </Submenu>
    </SubmenuList>
  </Menu>
  <Menu>
    <MenuName>
      <Eng>Databases</Eng> <Rus>Базы Данных</Rus>
    </MenuName>
    <SubmenuList>
      <Submenu>
        <ItemName>
          <Eng>Airports Database</Eng> <Rus>База данных аэропортов</Rus>
        </ItemName>
        <HotKey>Ctrl+A</HotKey>
        <Description>
          <Eng>Show airports database</Eng> <Rus>Показать аэронавигационную базу данных</Rus>
        </Description>
        <ImagePath>./Images/APTsymbol.png</ImagePath>
        <Checkable>true</Checkable>    
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Obstcl Database</Eng> <Rus>База данных препятствий</Rus>
        </ItemName>
        <HotKey>Ctrl+B</HotKey>
        <Description>
          <Eng>Show obstcl database</Eng> <Rus>Показать базу данных препятствий</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>true</Checkable>    
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>TANF Database</Eng> <Rus>База данных TANF</Rus>
        </ItemName>
        <HotKey>Ctrl+F</HotKey>
        <Description>
          <Eng>Show TANF database</Eng> <Rus>Показать базу данных TANF</Rus>
        </Description>
        <ImagePath>./Images/TANFsymbol.png</ImagePath>
        <Checkable>true</Checkable>    
      </Submenu>
    </SubmenuList>
  </Menu>
  <Menu>
    <MenuName>
      <Eng>View</Eng> <Rus>Вид</Rus>
    </MenuName>
    <SubmenuList>
      <Submenu>
        <ItemName>
          <Eng>Zoom In</Eng> <Rus>Масштаб+</Rus>
        </ItemName>
        <HotKey>Num+</HotKey>
        <Description>
          <Eng>Zooming +</Eng> <Rus>Увеличить масштаб</Rus>
        </Description>
        <ImagePath>./Images/zoomin.png</ImagePath>
        <Checkable>false</Checkable>
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Zoom Out</Eng> <Rus>Масштаб-</Rus>
        </ItemName>
        <HotKey>Num-</HotKey>
        <Description>
          <Eng>Zooming -</Eng> <Rus>Уменьшить масштаб</Rus>
        </Description>
        <ImagePath>./Images/zoomout.png</ImagePath>
        <Checkable>false</Checkable>
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Events Symbol</Eng> <Rus>Символы событий</Rus>
        </ItemName>
        <HotKey></HotKey>
        <Description>
          <Eng>Visibility for symbols of events</Eng> <Rus>Показать символы событий</Rus>
        </Description>
        <ImagePath>./Images/PntSymb.png</ImagePath>
        <Checkable>true</Checkable>
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Points name</Eng> <Rus>Наименования</Rus>
        </ItemName>
        <HotKey></HotKey>
        <Description>
          <Eng>Visibility for text of events</Eng> <Rus>Показать наименования событий</Rus>
        </Description>
        <ImagePath>./Images/PntName.png</ImagePath>
        <Checkable>true</Checkable>
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>WPT Info</Eng>
          <Rus>Информация о ППМ</Rus>
        </ItemName>
        <HotKey>Ctrl+I</HotKey>
        <Description>
          <Eng>Information about way point</Eng>
          <Rus>Информация о ППМ плана полета</Rus>
        </Description>
        <ImagePath>./Images/FlightPlan.png</ImagePath>
        <Checkable>true</Checkable>
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Phases Tree</Eng>
          <Rus>Дерево этапов</Rus>
        </ItemName>
        <HotKey>Ctrl+P</HotKey>
        <Description>
          <Eng>Window Tree of Phases on/off</Eng>
          <Rus>Включить/Выключить окно дерева этапов</Rus>
        </Description>
        <ImagePath>./Images/TreeView.png</ImagePath>
        <Checkable>true</Checkable>
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Toolbar</Eng>
          <Rus>Панель инструментов</Rus>
        </ItemName>
        <HotKey></HotKey>
        <Description>
          <Eng>Toolbar on/off</Eng>
          <Rus>Включить/Выключить панель инструментов</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>true</Checkable>
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Smooth for diagrams</Eng>
          <Rus>Сглаживание для графиков</Rus>
        </ItemName>
        <HotKey></HotKey>
        <Description>
          <Eng>Smooth for diagrams</Eng>
          <Rus>Сглаживание для графиков</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>true</Checkable>
      </Submenu>
      <Submenu>
        <InnerMenu>
          <MenuName>
            <Eng>Tracks</Eng> <Rus>Треки</Rus>
          </MenuName>
          <SubmenuList>
            <Submenu>
              <ItemName>
                <Eng>Track(s) Fit to Screen</Eng> <Rus>Трек(и) на весь экран</Rus>
              </ItemName>
              <HotKey>Ctrl+E</HotKey>
              <Description>
                <Eng>Track to all screen</Eng> <Rus>Показать один из треков на весь экран</Rus>
              </Description>
              <ImagePath>./Images/repair.png</ImagePath>
              <Checkable>false</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Vertical Projection</Eng>
                <Rus>Вертикальная проекция</Rus>
              </ItemName>
              <HotKey>Ctrl+V</HotKey>
              <Description>
                <Eng>Window with vertical projection</Eng>
                <Rus>Окно с вертикальной проекцией</Rus>
              </Description>
              <ImagePath>./Images/Relief.png</ImagePath>
              <Checkable>true</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Limits of Special Mode...</Eng>
                <Rus>Пределы специального режима...</Rus>
              </ItemName>
              <HotKey></HotKey>
              <Description>
                <Eng>Dialog of limits of special mode</Eng>
                <Rus>Диалог, определяющий пределы отображения специального режима</Rus>
              </Description>
              <ImagePath></ImagePath>
              <Checkable>false</Checkable>
            </Submenu>
            <Submenu>
              <ItemName>
                <Eng>Events Filter</Eng>
                <Rus>Фильтр событий</Rus>
              </ItemName>
              <HotKey>Ctrl+Y</HotKey>
              <Description>
                <Eng>Dialog of event's filter</Eng>
                <Rus>Диалог, включающий фильтр отображаемых событий</Rus>
              </Description>
              <ImagePath>./Images/Filter.png</ImagePath>
              <Checkable>false</Checkable>
            </Submenu>
          </SubmenuList>
        </InnerMenu>
      </Submenu>
    </SubmenuList>
  </Menu>
  <Menu>
    <MenuName>
      <Eng>Diagrams</Eng>
      <Rus>Графики</Rus>
    </MenuName>
    <SubmenuList>
      <Submenu>
        <ItemName>
          <Eng>Parameters of distance</Eng> <Rus>Параметры по расстоянию</Rus>
        </ItemName>
        <HotKey></HotKey>
        <Description>
          <Eng>Show dialog with parameters of distance</Eng>
          <Rus>Показать диалог с параметрами по расстоянию</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>false</Checkable>
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Parameters of time</Eng>
          <Rus>Параметры по времени</Rus>
        </ItemName>
        <HotKey></HotKey>
        <Description>
          <Eng>Show dialog with parameters of time</Eng>
          <Rus>Показать диалог с параметрами по времени</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>false</Checkable>
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Parameters of count</Eng>
          <Rus>Параметры по отсчетам</Rus>
        </ItemName>
        <HotKey></HotKey>
        <Description>
          <Eng>Show dialog with parameters of count</Eng>
          <Rus>Показать диалог с параметрами по отсчетам</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>false</Checkable>
      </Submenu>
    </SubmenuList>
  </Menu>
  <Menu>
    <MenuName>
      <Eng>Language</Eng>
      <Rus>Язык</Rus>
    </MenuName>
    <SubmenuList>
      <Submenu>
        <ItemName>
          <Eng>English</Eng> <Rus>Английский</Rus>
        </ItemName>
        <HotKey>Ctrl+1</HotKey>
        <Description>
          <Eng>Switch on english</Eng> <Rus>Переключить на английскую панель инструментов</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>true</Checkable> 
      </Submenu>
      <Submenu>
        <ItemName>
          <Eng>Russian</Eng> <Rus>Русский</Rus>
        </ItemName>
        <HotKey>Ctrl+2</HotKey>
        <Description>
          <Eng>Switch on russian</Eng> <Rus>Переключить на русскую панель инструментов</Rus>
        </Description>
        <ImagePath></ImagePath>
        <Checkable>true</Checkable> 
      </Submenu>
    </SubmenuList>
  </Menu>
</MenuBar>


Цитата(ufna @ 17.9.2010, 16:59) *
В этом .ini я постоянно храню кучи настроек, вплоть до "сейвов" GV систем.

У каждого свой "опыт" работы. У меня он был с этими ini-файлами не очень-то хороший! ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 17.9.2010, 16:34
Сообщение #28


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(AD @ 17.9.2010, 17:28) *
Вот подчиненная сделала файлик:

Всмысле в обычном текстовом редакторе набила? :blink:
Как она сейчас, надеюсь где нибудь отдыхает? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.9.2010, 16:35
Сообщение #29


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ufna @ 17.9.2010, 19:59) *
а что есть информация нетривиального вида, которую пользователь мог поправить, и которую так сложно записать?
+1
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.9.2010, 16:58
Сообщение #30


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(BRE @ 17.9.2010, 17:34) *
Всмысле в обычном текстовом редакторе набила? :blink:
Как она сейчас, надеюсь где нибудь отдыхает? :)

Да я не следил, в чем набивала... Не знаю....
Какое там отдыхает? :) Учиться, а вечерами работает! :) Пускай, пускай - полезно! :) Ей как раз работу по XML сдавать надо было, вот и взяла это в качестве примера.

P.S. Есть во мне элементы садизма! :lol:

Сообщение отредактировал AD - 17.9.2010, 17:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 17.9.2010, 18:10
Сообщение #31


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(AD @ 17.9.2010, 15:33) *
Что значит не надо? Нужную для работы информацию, которую править мог бы непрограммист! ;)

да элементарно к примеру ini правится даже не программистом. :)
я говорю "всё не надо" - в смысле у каждого формата есть рамки. если бы один формат был настолько универсален он бы был всего один на все случаи жизни.
что ты не можешь сохранить в ini файле скажи мне? приведи пример где xml выигрывает при хранении чего?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 17.9.2010, 19:22
Сообщение #32


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(AD @ 17.9.2010, 19:28) *
Я могу весь код привести. Вот подчиненная сделала файлик:

злой ты ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 17.9.2010, 19:30
Сообщение #33


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


А чем этот код нетривиален? Древовидная структура данных, ничего особенного. Записать ее можно что в ини, что в xml, тут кому как удобнее. Так что примера нетривиальных данных, которые сложно записать я не вижу.

В ини я бы записал это попроще и более понятно человеку, имхо. А мучаться с таким объемом по индентам.. бедная девочка.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.9.2010, 22:30
Сообщение #34


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  








Цитата(kwisp @ 17.9.2010, 19:10) *
да элементарно к примеру ini правится даже не программистом. :)
я говорю "всё не надо" - в смысле у каждого формата есть рамки. если бы один формат был настолько универсален он бы был всего один на все случаи жизни.
что ты не можешь сохранить в ini файле скажи мне? приведи пример где xml выигрывает при хранении чего?

Как говорится "На вкус и цвет товарищей нет"! :) Работать с XML понял, что поудобнее. Да и на работе девушки, составляющие подобные "ужасы", разбираются в них - так что не вижу проблем использования этого формата. Вот если своевременно узнаю о всех бедах (некоторые уже перечислили), то это будет - плюс. Вовремя обойти - сэкономить время этой девушки, да и себе тоже.



Цитата(ufna @ 17.9.2010, 20:30) *
А чем этот код нетривиален? Древовидная структура данных, ничего особенного. Записать ее можно что в ини, что в xml, тут кому как удобнее. Так что примера нетривиальных данных, которые сложно записать я не вижу.
Дерево, на мой взгляд, нетривиальная структура для ини-файла! ;) Человекам, код, который я показал, понятен. Это уже проверено.

Цитата(ufna @ 17.9.2010, 20:30) *
В ини я бы записал это попроще и более понятно человеку, имхо. А мучаться с таким объемом по индентам.. бедная девочка.

Приведи из данного примера небольшой кусок кода на ини-файле. Я даже не представляю как это будет выглядеть! А вообще - на вкус и цвет! ;)

Сообщение отредактировал AD - 17.9.2010, 22:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 17.9.2010, 23:38
Сообщение #35


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


[menubar]
name=Main menu bar

[menubar/main01]
imgpath=blablabal
checkable=true
name=Blablabla
hotkey=Ctl+x

[menubar/main01/main01_sub01]
imgpath=blablabal
checkable=true
name=Blablabla
hotkey=Ctl+x

[menubar/main01/main01_sub02]
imgpath=blablabal
checkable=true
name=Blablabla
hotkey=Ctl+x

[menubar/main02]
imgpath=blablabal
checkable=true
name=Blablabla
hotkey=Ctl+x


Ну а English/Rus описание уже как иделогия захочет - можно в каждый из этих, можно отдельным блоком для языков (что имхо правильнее)

QSettings дает тут отличную сбоводу,когда есть childGroups() и вообще понятие групп.

Да, единственная "проблема" - порядок меню (ХМЛ все-таки по порядку железно идет) - но это легко решается введением "индекса" в группе,например.

Сообщение отредактировал ufna - 17.9.2010, 23:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 17.9.2010, 23:39
Сообщение #36


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(AD @ 17.9.2010, 23:30) *
Вот если своевременно узнаю о всех бедах (некоторые уже перечислили), то это будет - плюс

Как уже говорили "у каждого формата есть рамки", каждый формат надо использовать с умом.

На мой взгляд так.

XML хорош если надо хранить древовидные структуры, вложенность тегов интуитивно понятна пользователям. Имена тегов избыточны, но зато несут доп. информацию для пользователя, видно какой тег закрывается. Недостаток - объем.

JSON - то же для деревьев, и сложных структур. Объем гораздо меньше, поэтому хорошо подходит для систем которые генерируют данные программно, не зря в AJAX-е в последнее время используют его. На мой взгляд разобраться в нагромождении закрывающих скобок, сложнее чем в тегах.

Для конфигов лучше использовать INI или даже простой конфиг ключ=значение.

Если нужны табличные данные, то можно посмотреть в сторону CSV.

Как то так.

Сообщение отредактировал Sokoloff - 17.9.2010, 23:40
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.9.2010, 23:46
Сообщение #37


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(ufna @ 18.9.2010, 0:38) *
Ну а English/Rus описание уже как иделогия захочет - можно в каждый из этих, можно отдельным блоком для языков (что имхо правильнее)

Ага. Значит, русский и английский вообще неучитывается в данном примере. Наглядности никакой, имхо. Короче, крайне неудачно.

Цитата(ufna @ 18.9.2010, 0:38) *
Да, единственная "проблема" - порядок меню (ХМЛ все-таки по порядку железно идет)

Вот именно. XML более понятен рядовому пользователю. Достаточно открыть XML файл интернет-эксплорером и все упорядоченно и ясно. Согласись, что в данном примере, ини-файлы куда менее наглядны. Как тут другие отметили тоже, что деревья удобнее представлять в xml-файлах!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 18.9.2010, 0:05
Сообщение #38


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


AD, это смешно :)

Кстати,читай лучше, "в этом примере" я про язык не стал говорить,т.к. вариантов сделать - дохрена. Вплодь до тыщи языков, в зависимости от системы перевода, я в принципе не согласен с той схемой как у тебя с языком. А ее аналог - два поля descEnd, descRus=.. в моем примере.

А что вот делать, если интернет экспорера с расцветкой под рукой нет, а только текстовый редактор? Загоним любую систему классификации серьезную (аля устрйоство мира у биологов - царства и далее - наступит кошмар). Минус ХМЛ будет гигансткий в том, что редактируя руками текущий блок тебе нужно смотреть кто его родитель, и далее - кто родитель родителя и т.п., чтобы представлять схему.

Если к "моему примеру" добавить инденты как делает на автомате IE (сам XML ни в коем случае этим не занимается), то будет тебе "наглядность". А убери инденты в ХМЛ - получишь дико нечитаемый документ. А ведь если быть честным, то сохраняя XML через программу, инденты не сохраняются - там пустых мест нет. Наглядность? :)


Счас проверил - при работе с QDom.. сохранение происходит всего XML в одну строчку. Очень наглядно :)

А сделать "ручками" - реально, в .INI инденты тоже можно делать, они потом порежутся (либо убираются парой нажатий клавиш).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.9.2010, 8:46
Сообщение #39


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AD @ 18.9.2010, 3:46) *
XML более понятен рядовому пользователю.
в котором месте? Ты сам-то на свой пример XML'ника смотрел?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 18.9.2010, 10:42
Сообщение #40


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


Цитата(ufna @ 18.9.2010, 1:05) *
Счас проверил - при работе с QDom.. сохранение происходит всего XML в одну строчку. Очень наглядно :)

Нормально всё сохраняется, а QDomDocument практически самый медленный парсер xml. В rapidxml даже флаг такой есть у функции распечатки xml - делать отступы/не делать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 18.9.2010, 11:32
Сообщение #41


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 18.9.2010, 9:46) *
в котором месте? Ты сам-то на свой пример XML'ника смотрел?

Юра, я просто так бы говорить не стал. Конечно, видел. И не только я.


ufna, давай использовать русские термины! ;) Инденты - отступы, если я правильно понял! ;))))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 18.9.2010, 11:48
Сообщение #42


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


Цитата(DEADHUNT @ 18.9.2010, 11:42) *
Нормально всё сохраняется, а QDomDocument практически самый медленный парсер xml. В rapidxml даже флаг такой есть у функции распечатки xml - делать отступы/не делать.


Хз, у меня сохраняется в одну-единственную строчку почему-то. Проверю :) А скорость - тут хз, пока мне это было совершенно не важно (в сравнении с остальными данными это такая мелочь), но спасибо за совет, т.к. возможно скоро пригодится именно скорость.

rapidxml не рассматривал, т.к. "не Qt" как я понял. Так то либ для хмл хватает :)


Цитата(AD @ 18.9.2010, 12:32) *
Юра, я просто так бы говорить не стал. Конечно, видел. И не только я.

ufna, давай использовать русские термины! ;) Инденты - отступы, если я правильно понял! ;))))


У тебя и "не только тебя" уже просто глаз привык к этой структуре. Проще взять одну структуру, сделать в двух форматах и дать вообще "левому пользователю" - и послушать мнение о том, как проще выполнить к примеру задание "поменять структуру (переместить), добавить меню, изменить порядок".

Инденты - да, отступы, видимо. Иногда забываю слова на русском (
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 18.9.2010, 12:11
Сообщение #43


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Ясно. Короче, предлагаю сменить тему. Тут уже пошло дело вкуса и привычки. Буду благодарен, если еще что-то откопаете о недостатках или достоинствах формата XML.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 18.9.2010, 13:43
Сообщение #44


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(ufna @ 18.9.2010, 1:05) *
А ведь если быть честным, то сохраняя XML через программу, инденты не сохраняются - там пустых мест нет. Наглядность?

Цитата(assistant)
void QDomNode::save ( QTextStream & str, int indent ) const
Записывает XML-представление узла и всех его потомков в поток str. Эта функция использует indent для определения величины отступа для подэлементов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

5 страниц V   1 2 3 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 24.6.2025, 3:36