LINUX.ORG.RU

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

 , , , ,


0

0

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

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



Проверено: Shaman007 ()

Ответ на: комментарий от k0l0b0k

> xml не нужен? ;)

=)) вообще не идеальный формат, зато общий

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

XML - зло ! Но деваться некуда, это зло повсюду. И ticpp пока рулит по параметру функционал/(0.8*сложность+ 0.2*размер).

pazak
()

> занимает менее 300 строк

Не верю!

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

ты от libxml подожди избавляться

>yXML не поддерживает все возможности XML целиком. На данный момент поддерживается только самое важное — теги, аттрибуты и комментарии. Причем комментарии пропускаются. Этого достаточно для хранения различной конфигурационной информации.

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

XML нужен как минимум для: RSS, XMPP, ODF. Так что не зло.

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

Ну вот. Воспользуются поделкой, а потом говорят, де, XML такой да сякой, несовместимый.

Deleted
()

 42 yxml_t *yxml_read(const char *str, const char **pstr) /* Read xml items from string */
 43 {
 44     const char *s, *p = str;
 45     yxml_t *x, *xml = NULL, *e = NULL;
 46     yxml_attr_t *a;
 47     int n, m;
 48     while (*p)
 49     {
 50         while (isspace(*p)) ++p; /* Skip spaces */
 51         if (*p != '<') { yxml_free(xml); *pstr = p; return NULL; } /* Syntax error */
 52         if (p[1] == '/') { *pstr = p; return xml; } /* End tag */
 53         else if (p[1] == '!' && p[2] == '-' && p[3] == '-') /* Skip comments */


может все 205 строк скопипастить?

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

Я спрашиваю в основном потому, что некоторые (не будем показывать пальцем) часто вопят о «несовместимости» XML'а и прочей брехни. Хотя проблемы у них обычно отнюдь не от этого.

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

да мне этого хватит. зато можно легко всунуть в свою C++ обертку. один раз только namespace понадобился и то только для того чтобы изобрести нормальный xsd для упрощения редактирования документа.

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

Куда разрабатывать? Есть тэги и атрибуты, что еще надо? Хватит.

AngryElf ★★★★★
()

эх, а еще где-то 2-3 года назад выпилил порт для mxml, думал, людям в кой-то веки пригодится. а тут велосипед, один друго квадратнее.

oc
()

>Скачивание должно начаться автоматически в течении 3 секунд. Если этого не произошло, скачайте по этой ссылке

УМРИ

УМРИ

УМРИ

УМРИ

УМРИ

УМРИ

УМРИ

УМРИ

Как же вы задрали, любители автокачалок. Умрите все, сволочи.

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

> Как же вы задрали, любители автокачалок.

Хы :) Исправление этого недостатка есть в планах :)

mrhx
() автор топика

yxml10.zip - FFFFFFFFFUUUUUUU!!!!!!!! Для полноты картины не хватает .rar.

Школота, епт. Что мешает назвать сделать нормальный архив yxml-1.0.0.tar.[gz|bz2] ?

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

> может все 205 строк скопипастить?

Угу, надо было сразу сорс вместо текста новости опубликовать.

GFORGX ★★★
()

Архив yxml10.zip раскрывается в имя каталога без версии - yxml.

FFFFFFFFFUUUUUUUUU!

stellar
()

и чего она умеет?

eXOR ★★★★★
()

Валидный XML не парзится.

IN : "<?xml version="1.0"?><foo><bar/></foo>" XML: NULL OUT (0): "" Partially parsed

FFFFFFFFFFFFUUUUUUUUUUUUUUUUUUU!!!!

stellar
()

в маленьких проектах юзаю tynyxml, не хватало сжатия, прикрутил gzstream.
больше ничего не нужно)

anonymous2 ★★★★★
()

ASCI7 парзится

IN : "<test><ascii/> </test>" XML: <test(4)> <ascii(5) /> </test> OUT (22): "<test><ascii /></test>" Wholly parsed

UTF не парзится

IN : "<тест><кодировок/> </тест>" XML: NULL OUT (0): "" Partially parsed

FFFFFFFFFFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUUUUUUUUUU!!!!!!!!!!!!!!!!

stellar
()

В мире куча интересных творческих востребованных задач, а всем бы новую недоделанную парсилку хмл писать охота =/

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

Пользуюсь pugiXML - крайне доволен :)

Хотелось бы результатов сравнения скорости.

xeningem
()

IN : "<test>failed</test>" XML: NULL OUT (0): "" Partially parsed

FFFFFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUUUUUUUUUU!!!!!!!!!!!!!!!!!

Нет, ну это просто ПЯТНИЦА.

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

> IN : "<test>failed</test>" XML: NULL OUT (0): "" Partially parsed

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

mrhx
() автор топика

Лучше бы ASN.1 кодер написали. А парсер зумля только ленивый не писал.

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

> Ждём реакции компании i4i

да, точняк, пора искать юристов =))

mrhx
() автор топика

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

Ну, или, о крайней мере, не смешили бы людей.

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

> Простое содержимое текстовое тоже не поддерживается. Только теги и
> аттрибуты. Так как создавался для узкой цели -- файлы конфигурации

Для файлов конфигурации есть чудесное решение - YAML. Ну или
совсем простой формат в стиле:
ключ = значение

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

> А самый лучший конфиг - скрипт на Scheme.

Для моих целей был нужен более распространенный формат, который мог бы быть прочитан на разных языках с минимумом усилий. Хотя лично мне скобки () больше нравятся, чем <> с кавычками...

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

>Простое содержимое текстовое тоже не поддерживается. Только теги и аттрибуты. Так как создавался для узкой цели -- файлы конфигурации. Хотя предположительно потом это будет добавлено, поскольку может понадобиться.

Это не парзер XML, а парзер языка, отдаленно похожего на 0.5% стандарта XML. Для хранения конфигов подходит чуть менее чем никак.

Нет-нет, писать даже такой код, КОНЕЧНО ЖЕ, лучше чем пить Ягу в парке или насиловать гусей, так что чем бы дитя не тешилось, как говорится...

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

>более читабельное, чем XML

Ну вот не надо начинать дремучий холивар, только недавно короткая реинкарнация была %)

>А самый лучший конфиг - скрипт


Teh fail!

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

>YAML

Уж лучше я с XML останусь %) Если хватает ini-файла подобного, то, ессесно, его стоит, да.

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

Это если не читать новости, а кидаться на флаги. А если читать - там действительно запатентовано...

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

>ключ = значение

ша!

wsdl.location = http://localhost:6666/MediaGateway?wsdl

# error field accessible thru setter -> shared attribute key
error.fields = assetID->//job:attribute[@name='assetId'];;hostname->'localhost'

error.params = job-id->/job:job/@id

Ключ значение поддерживающее сабститьюшены и мапы со значениями xpath! Мутанты форэвер!

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