| Автор |
Съобщение |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Моля, предложете семпъл C парсер за XML :)
Моля, предложете семпъл C парсер за XML  Опитах се да търся, но повечето са C++. Бих могъл да си избера от двата за C, които намерих, но ще е много полезно, ако споделите опит в ползвантео. expatlibroxml
|
| Чет Май 14, 2015 4:41 pm |
|
 |
|
gicho
Ранг: Форумен бог
Регистриран на: Пон Мар 13, 2006 1:59 pm Мнения: 3867 Местоположение: Габрово
|
 Re: Моля, предложете семпъл C парсер за XML :)
ezxml: http://ezxml.sourceforge.net/Но е прост, не знам какво ще правиш. Аз съм го ползвал само за четене и дори не знам дали може да пише. Не поддържа валидиране. Edit: аз съм го ползвал на микроконтролер, не иска почти нищо освен стандартните библиотеки (не му трябва ОС или файлова система имам предвид).
|
| Пет Май 15, 2015 12:49 am |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: Моля, предложете семпъл C парсер за XML :)
Благодаря ти много! Прилича на каквото ми трябва, но търси #include <unistd.h> и #include <sys/mman.h> които ги няма в пакета.
|
| Пет Май 15, 2015 9:46 am |
|
 |
|
gicho
Ранг: Форумен бог
Регистриран на: Пон Мар 13, 2006 1:59 pm Мнения: 3867 Местоположение: Габрово
|
 Re: Моля, предложете семпъл C парсер за XML :)
При мен най-отгоре в ezxml.c гордо стои: а unistd си имам от toolchain-a (gcc arm). Ти на какво се опитваш да го ползваш?
|
| Пет Май 15, 2015 10:25 am |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: Моля, предложете семпъл C парсер за XML :)
STM, ама за сега го симулирам с Visual studio под Win. (май накрая техниката ще е на UC3C2128) Както и да е, това файлче го има в мрежата, просто да знам, че е то.
(СЕГА ще го изровя от CooCox-а)
|
| Пет Май 15, 2015 10:33 am |
|
 |
|
gicho
Ранг: Форумен бог
Регистриран на: Пон Мар 13, 2006 1:59 pm Мнения: 3867 Местоположение: Габрово
|
 Re: Моля, предложете семпъл C парсер за XML :)
Просто компилирай с GCC, за PC-то ползвай MingW. Това че е стм или атмел не ми говори кой компилатор ще ползваш накрая, предполагам gcc, но може да е iar, keil, ... ?
|
| Пет Май 15, 2015 10:42 am |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: Моля, предложете семпъл C парсер за XML :)
а, да, за двете ползвам gcc. ОК, мерси!
|
| Пет Май 15, 2015 11:28 am |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: Моля, предложете семпъл C парсер за XML :)
За сега си избрах това: Mini-XML Tiny XML Library. Май за ползване е малко по-сложно от препоръчаното, но е по-лесно за интегриране. Поне за инцидентно пишеш C, като мен.
|
| Пон Май 18, 2015 11:54 am |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: Моля, предложете семпъл C парсер за XML :)
Днес ми потрябва и реших да ползвам (за Атмел проект) ezxml. Виждам (в map файла, а и в ReadMe така пише), че заема под 20КБ в програмата. А къде мога да прочета някаква оценка за заемания RAM? Ясно, че ще зависи от елементите на XML, но все пак трябва да има някаква оценка.
|
| Вто Окт 20, 2015 3:53 pm |
|
 |
|
gicho
Ранг: Форумен бог
Регистриран на: Пон Мар 13, 2006 1:59 pm Мнения: 3867 Местоположение: Габрово
|
 Re: Моля, предложете семпъл C парсер за XML :)
По спомен си хапваше динамична памет, така че колко е отпрал от heap-а зависи с какво го тормозиш.
|
| Вто Окт 20, 2015 4:16 pm |
|
 |
|
DanielDimov
Ранг: Почетен член
Регистриран на: Нед Фев 16, 2014 3:36 pm Мнения: 953
|
 Re: Моля, предложете семпъл C парсер за XML :)
ако трябва аз да пиша такъв парсер - бих го направил да ползва само един линеен буфер с фиксирана дължина която да се дефинира като константа... не ми се струва нормално да не се знае колко памет ползва която и да е библиотека за микроконтролер при положение че паметта му е най-ценния ресурс!
|
| Вто Окт 20, 2015 6:16 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
 Re: Моля, предложете семпъл C парсер за XML :)
е тогава ще стане весело  Не съм го разглеждал тоя ezxml, но в линка му пише, че няма валидатор. По принцип не е добре да се работи без валидация. Ако все пак няма нужда от валидация, то по-добре е да се избегне и парсването. С няколко прости функции може да се обхожда/сканира директно, така както си е в xml/text. За това не е нужна памет изобщо. Ако има валидиране, то xsd или съответната там схема определят какво е валидно и какво не. Парсерът се предполага, че трябва да може да обработи всяка валидна комбинация, демек ограничението би трябвало да се задава чрез схемата на валидация. Това значи да няма полета с произволна дължина и т.н. Другият вариант, който между другото е по-удачен, е да се ползва нерекурсивен парсер. Така дори и да свърши динамичната памет, няма да се омаже стека и да забие, а ще си върне грешка. Другото важно нещо е в точно каква форма ще се парсва. Използването на С-структури в динамичната памет е противопоказно. Бъговете са неизбежни, а който се надява на обратното е голям оптимист. Единственото решение са С++ класове от сорта на map/tree с автоматично управление на заемата памет. Освен, че така се решава проблема с освобождаването на паметта, също така се пести много памет при последващи обработки. С++ класовете/шаблони също така са далеч по-оптимизирани на тема индексиране, обхождане и т.н. С една дума чистото Ц на тема парсери и динамични структури е равносилно на самоубийство.... Не си го и помисляйте даже 
|
| Вто Окт 20, 2015 8:19 pm |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: Моля, предложете семпъл C парсер за XML :)
Благодаря ви много за коментарите, съветите, препоръките, ... ! Разширихте ми кръгозора  , описахте рисковете и дадохте насоки  . Идеята е тоя парсер да се стартира еднократно, за настройка на параметри, затова не съм много уплашен от ситуацията с паметта (за сега). А за валидацията си мислех, че XML ще е външно валидиран (т.е. парсваните XML-ли ще са проверени през същия парсер в дебъг обстановка).
|
| Сря Окт 21, 2015 9:22 am |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: Моля, предложете семпъл C парсер за XML :)
Освен XML може да се ползва и JSON - малко по простичък е за парсване а функционално е същия. А щом е само за инициализация може и най прост INI файл да се ползва - парсването му е още по просто + готови библиотеки колкото искаш ...
_________________ Мразя да мразя ...
|
| Сря Окт 21, 2015 12:00 pm |
|
 |
|
DanielDimov
Ранг: Почетен член
Регистриран на: Нед Фев 16, 2014 3:36 pm Мнения: 953
|
 Re: Моля, предложете семпъл C парсер за XML :)
В такъв случай (не си принуден от някой друг да ползваш XML) ти препоръчвам да ползваш ето това: http://www.digip.org/jansson/
|
| Сря Окт 21, 2015 12:25 pm |
|
|