| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Моля, предложете семпъл C парсер за XML :) http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=13775 |
Страница 1 от 2 |
| Автор: | NikB [ Чет Май 14, 2015 4:41 pm ] |
| Заглавие: | Моля, предложете семпъл C парсер за XML :) |
Моля, предложете семпъл C парсер за XML Опитах се да търся, но повечето са C++. Бих могъл да си избера от двата за C, които намерих, но ще е много полезно, ако споделите опит в ползвантео. expat libroxml |
|
| Автор: | gicho [ Пет Май 15, 2015 12:49 am ] |
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) |
ezxml: http://ezxml.sourceforge.net/ Но е прост, не знам какво ще правиш. Аз съм го ползвал само за четене и дори не знам дали може да пише. Не поддържа валидиране. Edit: аз съм го ползвал на микроконтролер, не иска почти нищо освен стандартните библиотеки (не му трябва ОС или файлова система имам предвид). |
|
| Автор: | NikB [ Пет Май 15, 2015 9:46 am ] |
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) |
Благодаря ти много! Прилича на каквото ми трябва, но търси #include <unistd.h> и #include <sys/mman.h> които ги няма в пакета. |
|
| Автор: | gicho [ Пет Май 15, 2015 10:25 am ] | |||||||||
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) | |||||||||
При мен най-отгоре в ezxml.c гордо стои:
а unistd си имам от toolchain-a (gcc arm). Ти на какво се опитваш да го ползваш? |
||||||||||
| Автор: | NikB [ Пет Май 15, 2015 10:33 am ] |
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) |
STM, ама за сега го симулирам с Visual studio под Win. (май накрая техниката ще е на UC3C2128) Както и да е, това файлче го има в мрежата, просто да знам, че е то. (СЕГА ще го изровя от CooCox-а) |
|
| Автор: | gicho [ Пет Май 15, 2015 10:42 am ] |
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) |
Просто компилирай с GCC, за PC-то ползвай MingW. Това че е стм или атмел не ми говори кой компилатор ще ползваш накрая, предполагам gcc, но може да е iar, keil, ... ? |
|
| Автор: | NikB [ Пет Май 15, 2015 11:28 am ] | |||||||||
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) | |||||||||
а, да, за двете ползвам gcc. ОК, мерси! |
||||||||||
| Автор: | NikB [ Пон Май 18, 2015 11:54 am ] |
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) |
За сега си избрах това: Mini-XML Tiny XML Library. Май за ползване е малко по-сложно от препоръчаното, но е по-лесно за интегриране. Поне за инцидентно пишеш C, като мен. |
|
| Автор: | NikB [ Вто Окт 20, 2015 3:53 pm ] |
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) |
Днес ми потрябва и реших да ползвам (за Атмел проект) ezxml. Виждам (в map файла, а и в ReadMe така пише), че заема под 20КБ в програмата. А къде мога да прочета някаква оценка за заемания RAM? Ясно, че ще зависи от елементите на XML, но все пак трябва да има някаква оценка. |
|
| Автор: | gicho [ Вто Окт 20, 2015 4:16 pm ] |
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) |
По спомен си хапваше динамична памет, така че колко е отпрал от heap-а зависи с какво го тормозиш. |
|
| Автор: | DanielDimov [ Вто Окт 20, 2015 6:16 pm ] |
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) |
ако трябва аз да пиша такъв парсер - бих го направил да ползва само един линеен буфер с фиксирана дължина която да се дефинира като константа... не ми се струва нормално да не се знае колко памет ползва която и да е библиотека за микроконтролер при положение че паметта му е най-ценния ресурс! |
|
| Автор: | miro_atc [ Вто Окт 20, 2015 8:19 pm ] | |||||||||
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) | |||||||||
е тогава ще стане весело Не съм го разглеждал тоя ezxml, но в линка му пише, че няма валидатор. По принцип не е добре да се работи без валидация. Ако все пак няма нужда от валидация, то по-добре е да се избегне и парсването. С няколко прости функции може да се обхожда/сканира директно, така както си е в xml/text. За това не е нужна памет изобщо. Ако има валидиране, то xsd или съответната там схема определят какво е валидно и какво не. Парсерът се предполага, че трябва да може да обработи всяка валидна комбинация, демек ограничението би трябвало да се задава чрез схемата на валидация. Това значи да няма полета с произволна дължина и т.н. Другият вариант, който между другото е по-удачен, е да се ползва нерекурсивен парсер. Така дори и да свърши динамичната памет, няма да се омаже стека и да забие, а ще си върне грешка. Другото важно нещо е в точно каква форма ще се парсва. Използването на С-структури в динамичната памет е противопоказно. Бъговете са неизбежни, а който се надява на обратното е голям оптимист. Единственото решение са С++ класове от сорта на map/tree с автоматично управление на заемата памет. Освен, че така се решава проблема с освобождаването на паметта, също така се пести много памет при последващи обработки. С++ класовете/шаблони също така са далеч по-оптимизирани на тема индексиране, обхождане и т.н. С една дума чистото Ц на тема парсери и динамични структури е равносилно на самоубийство.... Не си го и помисляйте даже |
||||||||||
| Автор: | NikB [ Сря Окт 21, 2015 9:22 am ] |
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) |
Благодаря ви много за коментарите, съветите, препоръките, ... ! Разширихте ми кръгозора Идеята е тоя парсер да се стартира еднократно, за настройка на параметри, затова не съм много уплашен от ситуацията с паметта (за сега). А за валидацията си мислех, че XML ще е външно валидиран (т.е. парсваните XML-ли ще са проверени през същия парсер в дебъг обстановка). |
|
| Автор: | palavrov [ Сря Окт 21, 2015 12:00 pm ] |
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) |
Освен XML може да се ползва и JSON - малко по простичък е за парсване а функционално е същия. А щом е само за инициализация може и най прост INI файл да се ползва - парсването му е още по просто + готови библиотеки колкото искаш ... |
|
| Автор: | DanielDimov [ Сря Окт 21, 2015 12:25 pm ] | |||||||||
| Заглавие: | Re: Моля, предложете семпъл C парсер за XML :) | |||||||||
В такъв случай (не си принуден от някой друг да ползваш XML) ти препоръчвам да ползваш ето това: http://www.digip.org/jansson/ |
||||||||||
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|