Парсинг конфиг файлов (библиотека vs своя функция)
Модератор: Модераторы разделов
-
Ardzhan
- Сообщения: 57
- ОС: Debian + WinXP на виртуалке
Парсинг конфиг файлов
Под линукс на си начал писать недавно, интересует такой вопрос. Для разбора конфиг файлов обычно используют какую-то стандартную библиотеку или пишут свою функцию???
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Re: Парсинг конфиг файлов
Прошу прощения за оффтоп. Но я сам такой.
Из "Что дyмают о pyсских пpогpаммистах их западные коллеги":
Рyсские пpогpаммисты не любят использовать шаблоны. Их пpогpаммы - это индивидyально написанные пpоизведения с большой долей импpовизации.
Из "Что дyмают о pyсских пpогpаммистах их западные коллеги":
Рyсские пpогpаммисты не любят использовать шаблоны. Их пpогpаммы - это индивидyально написанные пpоизведения с большой долей импpовизации.
ArchLinux / IceWM
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: Парсинг конфиг файлов
Ardzhan
хм, если вы заметили, почти у каждой линуксовой программы 'свой' формат конфигов => свой метод их парсинга.
хм, если вы заметили, почти у каждой линуксовой программы 'свой' формат конфигов => свой метод их парсинга.
-
Zeus
- Сообщения: 694
Re: Парсинг конфиг файлов
У меня конфиги в XML-е хранятся, но перебрав штук 10 разных библиотек парсинга XML я пришёл к выводу, что нужно писать свою.
Мне нужно-то было: из XML'я сформировать DOM в виде дерева из Node.
Причём нафиг не надо никаких дополнительных классов, типов, операций.
У меня Node это:
namespace jXML
{
class jNode:
{
public:
std::string name;
std::string value;
std::map<std::string, std::string> attributes;
jNode *parent;
std::list<jNode*> childs;
};
};
У парсера фактически 3 доступные функции:
парсинг,
запись DOM в файл (ф-я статическая, можно передать любой DOM - не обязательно DOM этого объекта),
удаление дерева (тоже статическая, передаёшь ей узел начиная с которого и ниже нужно всё удалить - он производит корректное удаление дерева).
Никаких словарей и прочих наворотов XML'я не поддерживается, но мне это и не надо.
Да, своя поделка сначала сыровата, но постепенно отладится, главное что уже сейчас парсит и записывает.
Мне больше и не нужно.
Главное - компилится любым C++ компилятором и не требует никаких дополнительных библиотек кроме стандартной.
Мне нужно-то было: из XML'я сформировать DOM в виде дерева из Node.
Причём нафиг не надо никаких дополнительных классов, типов, операций.
У меня Node это:
namespace jXML
{
class jNode:
{
public:
std::string name;
std::string value;
std::map<std::string, std::string> attributes;
jNode *parent;
std::list<jNode*> childs;
};
};
У парсера фактически 3 доступные функции:
парсинг,
запись DOM в файл (ф-я статическая, можно передать любой DOM - не обязательно DOM этого объекта),
удаление дерева (тоже статическая, передаёшь ей узел начиная с которого и ниже нужно всё удалить - он производит корректное удаление дерева).
Никаких словарей и прочих наворотов XML'я не поддерживается, но мне это и не надо.
Да, своя поделка сначала сыровата, но постепенно отладится, главное что уже сейчас парсит и записывает.
Мне больше и не нужно.
Главное - компилится любым C++ компилятором и не требует никаких дополнительных библиотек кроме стандартной.
-
Skull
- Модератор
- Сообщения: 2089
- ОС: ALT Linux
Re: Парсинг конфиг файлов
Зависит от тулкита: в KDE, Qt есть отличные классы. И для простого приложения есть библиотека. Всегда лучше взять готовое, чем городить свой огород.
А почему же ты не используешь XPath, идущий в стандартной libxml2? Русские любят трудности?Zeus писал(а): ↑26.01.2006 10:31У меня конфиги в XML-е хранятся, но перебрав штук 10 разных библиотек парсинга XML я пришёл к выводу, что нужно писать свою...
Никаких словарей и прочих наворотов XML'я не поддерживается, но мне это и не надо.
Да, своя поделка сначала сыровата, но постепенно отладится, главное что уже сейчас парсит и записывает.
Skull
-
Sparky
- Сообщения: 604
- Статус: core dumped
- ОС: Plan 9
Re: Парсинг конфиг файлов
Не стоит судить так строго, молодые программисты любят "поизобретать колесо", через это, ИМХО, все должны пройти B)
Блог
--------------------
GCS/M/MU/P/IT/E d- s: a- C++(+++) UBL++ P->-- L+++$ E- W+++$ N* o? K? w>--
O M-@ V- PS@ PE+ Y+ PGP+ t 5 X R* tv-->- b++ DI? D>+ G e+(++) h--- r+ y++
--------------------
GCS/M/MU/P/IT/E d- s: a- C++(+++) UBL++ P->-- L+++$ E- W+++$ N* o? K? w>--
O M-@ V- PS@ PE+ Y+ PGP+ t 5 X R* tv-->- b++ DI? D>+ G e+(++) h--- r+ y++
-
Zeus
- Сообщения: 694
Re: Парсинг конфиг файлов
А почему же ты не используешь XPath, идущий в стандартной libxml2? Русские любят трудности?
А он, скажем так, слишком самостоятелен в вопросах кодировки.
А к разговору о "начинающих".
Как-раз им-то полезно что-нибудь такое сварганить: ввод-вывод, анализ строк, структуры данных и т.п.
Хорошая тренировка.
-
nerezus
- Сообщения: 525
- Статус: Вселенский отказник
- ОС: windoze
Re: Парсинг конфиг файлов
молодые программисты любят "поизобретать колесо"
не молодые, а неопытные. Путать не стоит!
ICQ 547097
-
Ardzhan
- Сообщения: 57
- ОС: Debian + WinXP на виртуалке
Re: Парсинг конфиг файлов
Забыл сказать, что пишу своего демона, так что Qt и прочие подобные библиотеки не подойдут.
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: Парсинг конфиг файлов
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
Ardzhan
- Сообщения: 57
- ОС: Debian + WinXP на виртуалке
Re: Парсинг конфиг файлов
спасибо, то что нужно