Отговори на тема  [ 19 мнения ]  Отиди на страница 1, 2  Следваща
Моля, предложете семпъл C парсер за XML :) 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Моля, предложете семпъл C парсер за XML :)
Моля, предложете семпъл C парсер за XML :)

Опитах се да търся, но повечето са C++.
Бих могъл да си избера от двата за C, които намерих, но ще е много полезно, ако споделите опит в ползвантео.

expat
libroxml


Чет Май 14, 2015 4:41 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 1:59 pm
Мнения: 3867
Местоположение: Габрово
Мнение Re: Моля, предложете семпъл C парсер за XML :)
ezxml:
http://ezxml.sourceforge.net/
Но е прост, не знам какво ще правиш. Аз съм го ползвал само за четене и дори не знам дали може да пише. Не поддържа валидиране.
Edit: аз съм го ползвал на микроконтролер, не иска почти нищо освен стандартните библиотеки (не му трябва ОС или файлова система имам предвид).


Пет Май 15, 2015 12:49 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Re: Моля, предложете семпъл C парсер за XML :)
Благодаря ти много!
Прилича на каквото ми трябва, но търси
#include <unistd.h>
и
#include <sys/mman.h>
които ги няма в пакета.


Пет Май 15, 2015 9:46 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 1:59 pm
Мнения: 3867
Местоположение: Габрово
Мнение Re: Моля, предложете семпъл C парсер за XML :)
При мен най-отгоре в ezxml.c гордо стои:
Код:
#define EZXML_NOMMAP

а unistd си имам от toolchain-a (gcc arm).
Ти на какво се опитваш да го ползваш?


Пет Май 15, 2015 10:25 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Re: Моля, предложете семпъл C парсер за XML :)
STM, ама за сега го симулирам с Visual studio под Win.
(май накрая техниката ще е на UC3C2128)
Както и да е, това файлче го има в мрежата, просто да знам, че е то.

(СЕГА ще го изровя от CooCox-а)


Пет Май 15, 2015 10:33 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 1:59 pm
Мнения: 3867
Местоположение: Габрово
Мнение Re: Моля, предложете семпъл C парсер за XML :)
Просто компилирай с GCC, за PC-то ползвай MingW. Това че е стм или атмел не ми говори кой компилатор ще ползваш накрая, предполагам gcc, но може да е iar, keil, ... ?


Пет Май 15, 2015 10:42 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Re: Моля, предложете семпъл C парсер за XML :)
gicho написа:
Просто компилирай с GCC, за PC-то ползвай MingW. Това че е стм или атмел не ми говори кой компилатор ще ползваш накрая, предполагам gcc, но може да е iar, keil, ... ?

а, да, за двете ползвам gcc.
ОК, мерси!


Пет Май 15, 2015 11:28 am
Профил ICQ WWW
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Re: Моля, предложете семпъл C парсер за XML :)
За сега си избрах това: Mini-XML Tiny XML Library.
Май за ползване е малко по-сложно от препоръчаното, но е по-лесно за интегриране. Поне за инцидентно пишеш C, като мен.


Пон Май 18, 2015 11:54 am
Профил ICQ WWW
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Re: Моля, предложете семпъл C парсер за XML :)
Днес ми потрябва и реших да ползвам (за Атмел проект) ezxml.
Виждам (в map файла, а и в ReadMe така пише), че заема под 20КБ в програмата.
А къде мога да прочета някаква оценка за заемания RAM?
Ясно, че ще зависи от елементите на XML, но все пак трябва да има някаква оценка.


Вто Окт 20, 2015 3:53 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 1:59 pm
Мнения: 3867
Местоположение: Габрово
Мнение Re: Моля, предложете семпъл C парсер за XML :)
По спомен си хапваше динамична памет, така че колко е отпрал от heap-а зависи с какво го тормозиш.


Вто Окт 20, 2015 4:16 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Фев 16, 2014 3:36 pm
Мнения: 953
Мнение Re: Моля, предложете семпъл C парсер за XML :)
ако трябва аз да пиша такъв парсер - бих го направил да ползва само един линеен буфер с фиксирана дължина която да се дефинира като константа... не ми се струва нормално да не се знае колко памет ползва която и да е библиотека за микроконтролер при положение че паметта му е най-ценния ресурс!


Вто Окт 20, 2015 6:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: Моля, предложете семпъл C парсер за XML :)
DanielDimov написа:
ако трябва аз да пиша такъв парсер


е тогава ще стане весело :-)

Не съм го разглеждал тоя ezxml, но в линка му пише, че няма валидатор. По принцип не е добре да се работи без валидация. Ако все пак няма нужда от валидация, то по-добре е да се избегне и парсването. С няколко прости функции може да се обхожда/сканира директно, така както си е в xml/text. За това не е нужна памет изобщо.
Ако има валидиране, то xsd или съответната там схема определят какво е валидно и какво не. Парсерът се предполага, че трябва да може да обработи всяка валидна комбинация, демек ограничението би трябвало да се задава чрез схемата на валидация. Това значи да няма полета с произволна дължина и т.н. Другият вариант, който между другото е по-удачен, е да се ползва нерекурсивен парсер. Така дори и да свърши динамичната памет, няма да се омаже стека и да забие, а ще си върне грешка.
Другото важно нещо е в точно каква форма ще се парсва. Използването на С-структури в динамичната памет е противопоказно. Бъговете са неизбежни, а който се надява на обратното е голям оптимист. Единственото решение са С++ класове от сорта на map/tree с автоматично управление на заемата памет. Освен, че така се решава проблема с освобождаването на паметта, също така се пести много памет при последващи обработки. С++ класовете/шаблони също така са далеч по-оптимизирани на тема индексиране, обхождане и т.н.
С една дума чистото Ц на тема парсери и динамични структури е равносилно на самоубийство.... Не си го и помисляйте даже ;-)


Вто Окт 20, 2015 8:19 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Re: Моля, предложете семпъл C парсер за XML :)
Благодаря ви много за коментарите, съветите, препоръките, ... ! Разширихте ми кръгозора :), описахте рисковете и дадохте насоки :).

Идеята е тоя парсер да се стартира еднократно, за настройка на параметри, затова не съм много уплашен от ситуацията с паметта (за сега).
А за валидацията си мислех, че XML ще е външно валидиран (т.е. парсваните XML-ли ще са проверени през същия парсер в дебъг обстановка).


Сря Окт 21, 2015 9:22 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Моля, предложете семпъл C парсер за XML :)
Освен XML може да се ползва и JSON - малко по простичък е за парсване а функционално е същия.
А щом е само за инициализация може и най прост INI файл да се ползва - парсването му е още по просто + готови библиотеки колкото искаш ...

_________________
Мразя да мразя ...


Сря Окт 21, 2015 12:00 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Фев 16, 2014 3:36 pm
Мнения: 953
Мнение Re: Моля, предложете семпъл C парсер за XML :)
NikB написа:
Идеята е тоя парсер да се стартира еднократно, за настройка на параметри, затова не съм много уплашен от ситуацията с паметта (за сега).


В такъв случай (не си принуден от някой друг да ползваш XML) ти препоръчвам да ползваш ето това: http://www.digip.org/jansson/


Сря Окт 21, 2015 12:25 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 19 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 7 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни