LINUX.ORG.RU

yoctoXML - маленький и быстрый XML парсер

 , , , ,


0

0

Вышла первая версия простой библиотеки для работы с XML -- yoctoXML (yXML). Это очень компактная и простая библиотека, открытая по лицензии "modified BSD" (GPL-совместима). yXML всех возможностей XML не поддерживает, однако достаточна для хранения и обработки конфигурационных данных, к примеру. Очень проста в использовании. Написана на Си и занимает менее 300 строк (комментарии есть, разобраться и модифицировать легко).

>>> Подробности



Проверено: Shaman007 ()
Ответ на: комментарий от siberean

>diff как? (одна из основных - чем я пользуюсь)

ТАк же само - а шо не нравится?

>как понять что там в конфиге наменяли и что-то не работает (если конфиг большой)?


А как ты это для других форматов делаешь?

>ну как вы не понимаете - что это всё и называется пионерией, когда люди не могут решить простейшие задачи за секунды и быстро найти проблему в реал-тайме?


Не - это называется паразитами мозга когда люди не могут решить простейшие задачи потому что форма скобок сменилась.

r ★★★★★
()
Ответ на: комментарий от siberean

>Это возможно только если контекст мал (а он мал - если только это не ХМЛ, а простые пары значений, причём кроткие. Короче чем твиттер).

Ты одно скажи - где тут реальность? Ты в /etc когда последний раз заглядывал?

r ★★★★★
()
Ответ на: комментарий от siberean

>а теперь попробуйте подняться над всем этим, посмотрите сколько лет юниксовым тулам и как они _уже_ хорошо работают, и скажите: "а оно вам надо"? (чёта опять ёжики вспомнились)

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

r ★★★★★
()
Ответ на: комментарий от Alan_Steel

>Описывать меню в конфиге?

А что такого? GUI по сути - дерево.

>man .fvwm2rc


Этот мрак намного сложнее XML.

r ★★★★★
()
Ответ на: комментарий от Alan_Steel

>Если опустить детали синтаксиса, то там нечто типа

А не надо опускать детали синтаксиса - деталей синтаксиса там столько что это целый язык программирования. Ни о какой простоте тут речь не идет.

r ★★★★★
()
Ответ на: комментарий от r

Ну хоть ты, ярый сторонник всякого шлака, ну приведи уже пример проги, которой жизненно необходим XML для хранения НАСТРОЕК (не формы, не компоновки интерфейса, а настроек). А потом объясни, за каким органиом XML понадобился HAL'у

А в противовес сентенции про скобочки скажу, что есть другая болезнь - пихать одну технологию (безусловно, нужную и полезную) во все дыры. Серебряной пули не существует. Инструмент выбирают под задачу. И желательно заколачивать гвоздь молотком, а не инструментом для забивания свай

hc
()
Ответ на: комментарий от Deleted

> А если ещё один уровень вложенности?

Элементарно.

Submenu1
Sub-submenu1
Sub-submenu2
...

> Тоже не слишком удобно

Верно. Я могу с ходу предложить текстовый формат для менюшек, который
намного удобнее fvwm-овского.

Файл
 Открыть
 Сохранить
 Сохранить как
  Текст
  XML
 Печать
 Закрыть

Тем не менее, ничего невозможного (или неудобного) в записи меню
в текстовом файле нет.

Повторяю свой вопрос: зачем в конфигах xml?

Alan_Steel ★★
()
Ответ на: комментарий от Alan_Steel

Скопипасть полностью, уж больно красиво говоришь. А что на деле не ясно.

>Повторяю свой вопрос: зачем в конфигах xml?


Он вас терзает по ночам и мешает спать? Только что был пример, и опять зачем, да зачем?

Deleted
()
Ответ на: комментарий от r

> А что такого?

Если создатель программы - идиот и не смог спроектировать нормальное, удобное меню сразу, то его поделием пользоваться не стоит. ИМХО, конечно.

> Этот мрак намного сложнее XML.

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

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

Alan_Steel ★★
()
Ответ на: комментарий от Deleted

И ещё, если кто-то будет изменять параметры в твоём конфиге, ему тоже писать свой велосипедный парсер лично для твоего конфига?

Deleted
()
Ответ на: комментарий от Alan_Steel

>Если создатель программы - идиот и не смог спроектировать нормальное, удобное меню сразу, то его поделием пользоваться не стоит. ИМХО, конечно.

ILOLD. Тролли такие тролли.

Deleted
()
Ответ на: комментарий от Alan_Steel

>Да, реализация хромает.

ЧиТД. Следующий.

>Я, впрочем, тоже могу привести примеры малочитабельного xml.


А нормальную реализацию твоей версии покажешь?

Deleted
()
Ответ на: комментарий от Deleted

> Скопипасть полностью, уж больно красиво говоришь. А что на деле не ясно.

Ок, выложу куда-нибудь файл как только почищу его от всяких паролей и прочего.

Вот кусок с главным меню:
AddToMenu "/Debian/Me"
+ "Инет" Popup /Debian/Me/Net
+ "Офис" Popup /Debian/Me/Office
+ "Разное" Popup /Debian/Me/Stuff
+ "Игры" Popup /Debian/Me/Games
+ "Аудио" Popup /Debian/Me/audio
+ "ftp" Popup /Debian/Me/ftp
+ "Обзор" Popup /Debian/Me/View
+ "Терминалы" Popup /Debian/Me/Terms
+ "System" Popup /Debian/OFF
+ "" Nop
+ "Restart" Restart /usr/bin/X11/fvwm2
+ "Quit" Quit

Вот кусок с подменю "Инет"
DestroyMenu "/Debian/Me/Net"
AddToMenu "/Debian/Me/Net" "Интернет" Title
+ "psi" Exec psi
+ "Xchat" Exec xchat
+ "FireFox" Exec LD_PRELOAD=/home/sergey/malloc.so firefox
+ "Opera" Exec opera
+ "ThunderBird" Exec thunderbird
+ "Downloader" Exec d4x

> Он вас терзает по ночам и мешает спать?


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

> Только что был пример


На него мы ответили контр-примером ;) Ничего невозможного в записи GUI в текстовый файл нет.

Alan_Steel ★★
()
Ответ на: комментарий от Deleted

> И ещё, если кто-то будет изменять параметры в твоём конфиге, ему тоже писать свой велосипедный парсер лично для твоего конфига?

Какой, нафиг, парсер? Конфиги должны быть удобны для правки человеком. Хорошие текстовые редакторы написаны уже лет 20 как.

Alan_Steel ★★
()
Ответ на: комментарий от Alan_Steel

Контрпримером, который больше похож на скрипт, а не конфиг :}

Deleted
()
Ответ на: комментарий от Deleted

> А нормальную реализацию твоей версии покажешь?

Говорят, гугл знает если не всё, то очень многое ;)

Я лично пример привести не готов, поскольку вопросом хранения менюшек в конфиге никогда не задавался.

Alan_Steel ★★
()
Ответ на: комментарий от Alan_Steel

>Какой, нафиг, парсер?

С новым годом! Существуют на свете такие GUI программы, которые редактируют конфиги. Вы не знали? Ну так вот, в нашем, 21ом, веке они уже есть!

Deleted
()
Ответ на: комментарий от Alan_Steel

> Повторяю свой вопрос: зачем в конфигах xml?

Тут вопрос времени. XML -- для того, чтобы не тратить время на написание своего, даже самого простого парсера, если конечно нет уже готового своего. Тогда конечно лучше использовать свой -- xml будет явно сложнее в читаемости и удобстве.

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

mrhx
() автор топика
Ответ на: комментарий от Deleted

> Существуют на свете такие GUI программы, которые редактируют конфиги.

Конечно, kate, kwrite - тыщи их. И что? Это каким-то образом отменяет наличие хороших консольных редакторов?

З.Ы. я всё ещё жду пример, зачем xml нужен в конфиге.

Alan_Steel ★★
()
Ответ на: комментарий от Alan_Steel

Кто-то по-моему не понял. Я говорю о конфигураторах, а не о программах для редактирования XML. Если вы не умеете редактировать XML в nano то это ваши личные половые проблемы. Так бы и сказали, не понимаю, мол, XML.

>я всё ещё жду пример, зачем xml нужен в конфиге.


Жди, жди. Троллям это полезно.

Deleted
()
Ответ на: комментарий от Deleted

>И ещё, если кто-то будет изменять параметры в твоём конфиге, ему тоже писать свой велосипедный парсер лично для твоего конфига?

Я и ответил, что необязательно быстро, решительно плодить велосипеды

hc
()
Ответ на: комментарий от mrhx

> Тут вопрос времени. XML -- для того, чтобы не тратить время на написание своего, даже самого простого парсера

Если мы говорим о мире СПО, то тут уже есть куча парсеров для всех возможных типов конфигов - бери и пользуйся.

Если же программа проприетарная, то тут в любом случае выхода два - или писать свой или покупать сторонний.

Каким образом xml тут экономит время мне неясно.

> Это конечно уже не конфиги.

Так и я о том же! XML ~ нужная и полезная вещь, с довольно широкой областью применения. Но это не повод пихать её во все возможные места.

Например, микроскопом можно забивать гвозди. Вот только почему-то этого никто не делает ;)

Alan_Steel ★★
()
Ответ на: комментарий от hc

Проблема в том, что иначе как раз таки разные программы начинают их плодить…

Deleted
()
Ответ на: комментарий от Deleted

Кто-то, кажется, не видит разницы между "не понимаю" и "не вижу смысла"

И да,

>Жди, жди. Троллям это полезно.

Как расценивать? 2 человека просят привести кусок конфига или любой пример в подтверждение твоих слов о необходимости XML в конфиге. А ты... Слив? Незнание области? Голословные утверждения? Лень?

hc
()
Ответ на: комментарий от Alan_Steel

>Если мы говорим о мире СПО, то тут уже есть куча парсеров для всех возможных типов конфигов - бери и пользуйся.

Сколько парсеров надо подключить для реализации «Параметров системы» aka «панели управления»?

Deleted
()
Ответ на: комментарий от hc

>Как расценивать? 2 человека просят привести кусок конфига или любой пример в подтверждение твоих слов о необходимости XML в конфиге. А ты... Слив?

Водопроводчик? Тебе привели простой пример — меню. Если тебя он не устраивает, то это твои проблемы. Другой вариант тебя тоже не устроит. Как будто я в первый раз на ЛОРе, будешь мне тут сказки рассказывать.

Deleted
()
Ответ на: комментарий от Deleted

Не экстраполируй. В ответ на пример с меню тебе привели компромиссный вариант, менее ресурсоёмкий и легко читаемый и корректируемый человеком. Одни плюсы. Зачем там XML? И, кстати, я специально сделал акцент, что хочу увидеть. зачем хранить настройки программы, а не интерфейса, в XML

hc
()
Ответ на: комментарий от Alan_Steel

>Файл

> Открыть

> Сохранить

> Сохранить как

> Текст

> XML

> Печать

> Закрыть

Кстати, да, за python-style indent зачёт :)

hc
()
Ответ на: комментарий от hc

Одни плюсы? Да ну? Уверен? Уверен в его удобной расширяемости вглубь и вширь? И про парсер ты так же не ответил.

>зачем хранить настройки программы, а не интерфейса, в XML


Что бы, как минимум, не плодить велосипедных парсеров. Если тебя эта проблема не волнует — проходи мимо.

Deleted
()
Ответ на: комментарий от Deleted

Товарищ, ты уверен, что внимательно читаешь то, что у тебя спрашивают?

"привести кусок конфига или любой пример в подтверждение твоих слов о необходимости XML в конфиге."

Слово "необходимость" в данном контексте означает, что для решения проблемы нужен именно xml, другие способы не подходят.

Ты привёл пример - GUI. Я тебе привёл два примера, как в текстовом файле хранить его. Вывод - xml не является необходимым для хранения GUI.

Будь добр, приведи другой пример.

Alan_Steel ★★
()
Ответ на: комментарий от Deleted

В расширяемости уверен. Единственная проблема, которая может возникнуть - не хватит 80*25 для отображения. Но в случае xml эта проблема возникнет сразу же, на первом же теге.

А волнует меня проблема того, что некоторые проблемы можно решить hal'ом, но из-за xml-а головного мозга разработчиков делать это настолько неприятно, что аж противно. Всё равно, что сайт писать на голом HTML руками. И чем дальше, тем больше разработчиков выбирают "невелосипедный" xml для конфиго, где он сроду не нужен. Хотя в 90% случаев не то, что yaml-а хватит - param=value окажется огромным оверхедом. Мне вообще нравится конфиг ррр:

nodeflate

defaultroute

...

Сказка!

hc
()
Ответ на: комментарий от Alan_Steel

А ты уверен, что умеешь читать? Слово «парсер» в твоём мозгу никак не интерпретируется?

Загляни в /etc и помедитируй. Объяснять ребёнку, канючащему «А всё не то! Мне надо не такое! Ааа!», что такое XML и зачем он нужен у меня времени нет.

Deleted
()
Ответ на: комментарий от hc

> Хотя в 90% случаев не то, что yaml-а хватит - param=value окажется огромным оверхедом.

+1, только я бы сказал, что текстовых конфигов хватает для конфигурирования всего.

Alan_Steel ★★
()
Ответ на: комментарий от hc

>Всё равно, что сайт писать на голом HTML руками.

Быть может я тебя удивлю, но на нём и пишут. Шаблоны. Или ты хочешь HTML'ом и запросы к базе делать?

>для конфиго, где он сроду не нужен. Хотя в 90% случаев не то, что yaml-а хватит - param=value окажется огромным оверхедом. Мне вообще нравится конфиг ррр:


Да да, а потом редактируешь конфиг и думаешь, использует ли автор экранирование, каким образом он это сделал, удаляет ли он лишние пробелы и ещё 1000 и 1 подобный вопрос. Очень удобно.

То, что у HAL'а сложные конфиги проблемы разработчиков, но никак не XML'а. На самом деле это не конфиг, это скрипт, просто в виде XML. Потому и такой геморрой.

Deleted
()
Ответ на: комментарий от Deleted

По долгу службы часто бываю в /etc. С xml столкнулся только в fontconfig и hal. Что ты хотел сказать своим предложением "посмотреть в xml"? Если ты хотел указать на кучу форматов, то я отвечу так:

1. Разработчиков webmin это не испугало

2. Формат выбирается под задачу

3. Если смущает разношёрстность - XML не лучший общий знаменатель

hc
()
Ответ на: комментарий от Deleted

> Слово «парсер» в твоём мозгу никак не интерпретируется?

Парсеры уже написаны все и всякие, на любой вкус. В том числе, xml-ный. Раз уж есть возможность выбора, следует выбрать вариант более удобный человеку - текстовый файл.

> Загляни в /etc и помедитируй.

Запросто. Программ, использующих xml конфиги - явное меньшинство. И все вокруг плюются от отсутствия удобного способа для их редактирования.

Alan_Steel ★★
()
Ответ на: комментарий от Deleted

Посмотри на конфиги UDEV. Всё ясно, понятно, расширяемо, легко разбирается. И тоже не конфиг, а скрипт

hc
()
Ответ на: комментарий от Deleted

>Да да, а потом редактируешь конфиг и думаешь, использует ли автор экранирование, каким образом он это сделал, удаляет ли он лишние пробелы и ещё 1000 и 1 подобный вопрос. Очень удобно.

Честно - ни разу не задумывался ни над одним из этих вопросов. Может, потому, что читаю документацию и примеры конфигов?

hc
()
Ответ на: комментарий от hc

>1. Разработчиков webmin это не испугало

То, что кому-то захотелось написать и использовать кучу велосипедов не отменяет факта наличия проблемы.

Deleted
()
Ответ на: комментарий от hc

А ещё можно посмотреть на апач. Идеи некоторые взяты из XML, но всё настолько ясно без лишних кавычек и скобочек... Может, хоть этот xml-овидный пример тебя хоть в чём-то убедит

hc
()
Ответ на: комментарий от hc

Именно. Читаем правим. Вышла новая версия — зачтём ещё раз на всякий случай. Одно дело читать об опциях, а другое дело о каждом новом велосипедном виде конфигов.

Deleted
()
Ответ на: комментарий от Deleted

Я всего лишь ответил на твой вопрос. А авторам HAL'а напишу, только если использование этой подсистемы станет жутко необходимым для решения моей задачи. Пока пусть разработчики дистра позаботятся об этом

hc
()
Ответ на: комментарий от Deleted

Толсто. У венды есть объективные недостатки, которые не дают использовать её для определённых задач. А где-то объективные недостатки линукса вылазят наружу и не дают использовать его

hc
()
Ответ на: комментарий от hc

Зато на ведне уже всё работает (ц) И даже игры играют, сканеры сканируют, вам шашечки или ехать? :}

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.