Опять про XML
От: Аноним  
Дата: 30.03.12 05:53
Оценка:
Есть с++ чисто нейтивный проект.
Нужно сохранять и загружать конфигурацию.
Что посоветуете?

Увидел — http://www.codeproject.com/Articles/18732/XML-Include-a-Flexible-Parser-in-Your-C-Applicatio


Include a Flexible Parser in Your C++ Applications


Мне нравится что это простое не замороченное решение. Бесплатное, и переносимое.
Что за велосипед я изобретаю и на какие грабли наеду?
Re: Опять про XML
От: Мишень-сан  
Дата: 30.03.12 06:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть с++ чисто нейтивный проект.

А>Нужно сохранять и загружать конфигурацию.
А>Что посоветуете?

Так вам XML или конфу?
Если конфигурация, я бы взял что-то полегче. JSON например. Потому как читать и править руками XML занятие не самое приятное.
Если же нужен именно XML, можно для плюсов взять TinyXML?. Маленький (хедер плюс один файл исходника), простой.
А вот брать Xerces-c не советую. У её архитекторов кажется ООП головного мозга. Одно только количество классов и 4 (!!!) независимых иерархии исключений.
Re: Опять про XML
От: chemey  
Дата: 30.03.12 06:41
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть с++ чисто нейтивный проект.

А>Нужно сохранять и загружать конфигурацию.
А>Что посоветуете?

Что-нибудь простенькое.
PugiXml, RapidXml — самое оно.

А>Увидел — http://www.codeproject.com/Articles/18732/XML-Include-a-Flexible-Parser-in-Your-C-Applicatio


А>

А>Include a Flexible Parser in Your C++ Applications


А>Мне нравится что это простое не замороченное решение. Бесплатное, и переносимое.

А>Что за велосипед я изобретаю и на какие грабли наеду?

Почитал. Запросы по сети, ADO, шифрование — нифига не просто и не замороченно. Зачем все эти свистоперделки для конфигов?
Библиотечка для работы с XML должна парсить и создавать XML. Точка. Если есть какие-то дополнительные перделки — значит, автор делает не библиотеку, а гибрид слона и удава. Оно вам надо?

На самом деле, полноформатная работа с XML (кодировки, валидация, трансформация) — штука сложная, не зря всякие монстры типа Xerxes живут.
Бзззззззжжжжж
Re: Опять про XML
От: Centaur Россия  
Дата: 30.03.12 06:43
Оценка: 13 (2) +3 -1
Здравствуйте, Аноним, Вы писали:

А>Есть с++ чисто нейтивный проект.

А>Нужно сохранять и загружать конфигурацию.
А>Что посоветуете?

boost::program_options будет достаточно.
Re: Опять про XML
От: о_О
Дата: 30.03.12 06:48
Оценка:
codeproject отличается больными идеями и низким качеством реализации. глянь вот на этот. на нем всё сведено в одну сущность — узел.
Re: Опять про XML
От: K13 http://akvis.com
Дата: 30.03.12 06:50
Оценка: 13 (2) +4
А>Есть с++ чисто нейтивный проект.
А>Нужно сохранять и загружать конфигурацию.
А>Что посоветуете?

boost::property_tree
Re[2]: Опять про XML
От: chemey  
Дата: 30.03.12 06:53
Оценка: +1
Здравствуйте, Мишень-сан, Вы писали:

МС>Так вам XML или конфу?

МС>Если конфигурация, я бы взял что-то полегче. JSON например. Потому как читать и править руками XML занятие не самое приятное.

Можно YAML еще использовать. Он вроде как подружелюбнее JSONа в плане редактирования. Или вообще — INI-style конфиги, для их парсинга/сохранения даже библиотеки не надо, все десять строчек парсера пишутся на коленке за пять минут.

МС>Если же нужен именно XML, можно для плюсов взять TinyXML?. Маленький (хедер плюс один файл исходника), простой.


По сравнению с RapidXml он жирнее, медленнее, и линкуется отдельной библиотекой.
С другой стороны, при создании XML через RapidXml нужно написать чуть больше кода (надо вызывать аллокаторы для копирования нестатических данных вовнутрь объекта, если я правильно помню).

МС>А вот брать Xerces-c не советую. У её архитекторов кажется ООП головного мозга. Одно только количество классов и 4 (!!!) независимых иерархии исключений.


Согласен.
Xerces — это для серьезных, очень серьезных задач.
Бзззззззжжжжж
Re[3]: Опять про XML
От: Мишень-сан  
Дата: 30.03.12 08:04
Оценка: 1 (1)
Здравствуйте, chemey, Вы писали:

C>Согласен.

C>Xerces — это для серьезных, очень серьезных задач.

Моё скромное ИМХО — я бы его вообще ни для чего не брал. Слишком переусложнённая на ровном месте вещь.
Re[4]: Опять про XML
От: о_О
Дата: 30.03.12 09:07
Оценка: :)
Здравствуйте, Мишень-сан, Вы писали:

МС>Моё скромное ИМХО — я бы его вообще ни для чего не брал. Слишком переусложнённая на ровном месте вещь.


сейчас придет okman и расскажет тебе, как ты неправ
Re[5]: Опять про XML
От: okman Беларусь https://searchinform.ru/
Дата: 30.03.12 10:52
Оценка: 1 (1) +1
Здравствуйте, о_О, Вы писали:

о_О>Здравствуйте, Мишень-сан, Вы писали:


МС>>Моё скромное ИМХО — я бы его вообще ни для чего не брал. Слишком переусложнённая на ровном месте вещь.


о_О>сейчас придет okman и расскажет тебе, как ты неправ


Не, переубеждать никого не собираюсь, тем более, что человек написал "ИМХО", и высказанная
точка зрения совершенно понятна. А вообще, я сам не знаю, как в наше время принято решать такие
задачи, как чтение-запись конфигов.

С одной стороны, для таких простых вещей не нужен ни XML, ни его имплементации в лице монструозных
Xerces, libxml и остальных — подойдет самый обычный INI-файл или вообще какой-нибудь CSV.

А с другой — стоит хотя бы задуматься о том, во что это "чтение-запись" может превратиться через
годик-другой, когда потребуется (вдруг!) часто менять формат, сделать его переносимым между платформами,
заставить понимать разные кодировки, и под все это дело каждый раз подыскивать или переписывать
парсинг... Нет уж, спасибо. Если задача подразумевает какое-то масштабирование, лучше сразу
выбрать инструмент с расчетом на будущее, и закрыть себя от многих подобных проблем.

В моем случае таким инструментом оказался Xerces. Ну да, его API мрачноват, но я видел куда
более отвратные программные интерфейсы со структурами в полторы сотни полей и невнятными контрактными
соглашениями, приводившими при неверном использовании API не к явным и документированным ошибкам,
как должно быть во всех нормальных либах, а к глюкам в местах, зависящих от версии библиотеки и
положения левого ботинка соседа с восьмого этажа. Xerces по сравнению с этим — милый пушистый
котенок, к тому же ничто не мешает написать несколько простых оберток или фасадов и все, мы имеем
простой и наглядный клиентский код. Да, и под Windows он элементарно собирается, чего не скажешь о
том же libxml++, который, по-моему, сильно уж unix-ориентирован в этом плане, хотя его API и поприятнее.

Плата за все удовольствие в совокупности — это "довесок" к бинарникам, в размере порядка одного
мегабайта, что по современным "расценкам" почти ничто.

Но это все также мое ИМХО, ничуть не менее ИМХО-вое, чем у Мишень-сан.
Re[2]: Опять про XML
От: Ops Россия  
Дата: 30.03.12 10:58
Оценка:
Здравствуйте, Centaur, Вы писали:

А>>Есть с++ чисто нейтивный проект.

А>>Нужно сохранять и загружать конфигурацию.
А>>Что посоветуете?

C>boost::program_options будет достаточно.


Она уже научилась создавать, а не только парсить конфиги?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: Опять про XML
От: ntp  
Дата: 30.03.12 11:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть с++ чисто нейтивный проект.

А>Нужно сохранять и загружать конфигурацию.
А>Что посоветуете?
Если XML, то pugi, rapidxml, minixml.
Но вообще, лучше смотреть в сторону conf-файлов (подобие INI для юниксов) и библиотек к ним.
Re: Опять про XML
От: MasterZiv СССР  
Дата: 30.03.12 12:50
Оценка: +1 -1
> Есть с++ чисто нейтивный проект.
> Нужно сохранять и загружать конфигурацию.
> Что посоветуете?

boost::program_options
Posted via RSDN NNTP Server 2.1 beta
Re: Опять про XML
От: 13akaEagle Россия  
Дата: 31.03.12 02:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть с++ чисто нейтивный проект.

А>Нужно сохранять и загружать конфигурацию.
А>Что посоветуете?

А>Увидел — http://www.codeproject.com/Articles/18732/XML-Include-a-Flexible-Parser-in-Your-C-Applicatio



А>

А>Include a Flexible Parser in Your C++ Applications


А>Мне нравится что это простое не замороченное решение. Бесплатное, и переносимое.

А>Что за велосипед я изобретаю и на какие грабли наеду?

http://jsoncpp.sourceforge.net/
Re: Опять про XML
От: SX Россия  
Дата: 31.03.12 04:52
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть с++ чисто нейтивный проект.

А>Нужно сохранять и загружать конфигурацию.
А>Что посоветуете?

boost.property_tree...
Re[2]: Опять про XML
От: SenorProgramador Голландия riogamestudio.com
Дата: 31.03.12 05:37
Оценка:
Здравствуйте, SX, Вы писали:

SX>Здравствуйте, Аноним, Вы писали:


А>>Есть с++ чисто нейтивный проект.

А>>Нужно сохранять и загружать конфигурацию.
А>>Что посоветуете?

pugixml -- small and fast
Veni, vidi, vici
I came, I saw, I conquered
Re[2]: Опять про XML
От: Ops Россия  
Дата: 31.03.12 09:24
Оценка:
Здравствуйте, MasterZiv, Вы писали:

>> Есть с++ чисто нейтивный проект.

>> Нужно сохранять и загружать конфигурацию.
>> Что посоветуете?

MZ>boost::program_options


Эта либа не писатель, а читатель. В отличие от.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[6]: Опять про XML
От: Мишень-сан  
Дата: 02.04.12 06:18
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, о_О, Вы писали:


о_О>>Здравствуйте, Мишень-сан, Вы писали:


O>С одной стороны, для таких простых вещей не нужен ни XML, ни его имплементации в лице монструозных

O>Xerces, libxml и остальных — подойдет самый обычный INI-файл или вообще какой-нибудь CSV.

Я просто в последнее время насмотрелся на XML из одних нодов с именами по 10-15 знаков и степенью вложенности 8-10 уровней. Причём с конструкциями вроде:
<MySuperPuperObjects>
  <MySuperPuperObject>
    <Name>objname</Name>
  </MySuperPuperObject>
</MySuperPuperObjects>

Это не то что редактировать — читать тяжело.

O>А с другой — стоит хотя бы задуматься о том, во что это "чтение-запись" может превратиться через

O>годик-другой, когда потребуется (вдруг!) часто менять формат, сделать его переносимым между платформами,
O>заставить понимать разные кодировки, и под все это дело каждый раз подыскивать или переписывать
O>парсинг... Нет уж, спасибо. Если задача подразумевает какое-то масштабирование, лучше сразу
O>выбрать инструмент с расчетом на будущее, и закрыть себя от многих подобных проблем.

Опять же, есть шанс словить синдром AbstractFactoryProxyMixinSingleton. Но ИМХО если обычная конфа превращается в РБД, одной переделкой парсера не отделаешься. А парсер... Парсер должен работать над потоком юникод-токенов. Вычитка напрямую из источника и приведение к юникоду не его забота.

O>В моем случае таким инструментом оказался Xerces. Ну да, его API мрачноват, но я видел куда

O>более отвратные программные интерфейсы...

Это да, за такое надо автора сковородкой по башке Помню свои разборки с вещичкой под названием dbVista в начале карьеры. Как сетевая база (в смысле организации) вполне ничего, даже АПИ на КА я считаю вполне адекватным, но на ряд штатных ошибок эта падла ложила весь процесс ассёртом, не давая даже среагировать.

O>Плата за все удовольствие в совокупности — это "довесок" к бинарникам, в размере порядка одного

O>мегабайта, что по современным "расценкам" почти ничто.

Дык про размер бинарей вроде никто и не говорит. Метр или два, особенно если система и так большая, уже рояли не играет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.