Подтвердить что ты не робот

Библиотека XML для встроенных систем

Я работаю над проектом для встроенной системы, использующей XML для получения данных в систему и из нее. Я не хочу, чтобы обработка XML передавалась в кучу битов, которые строят строки XML, используя snprintf()/strcat() и друзей или анализируя XML, путем подсчета символов "<" и ">".

Я нашел несколько XML-библиотек, несколько из которых могут быть даже достаточно маленькими, но ближе всего к C есть С++, чего нет в карточках для этой системы. Я надеюсь, что я смогу найти библиотеку XML, которая удовлетворяет следующим ограничениям:

  • исходный код C
  • отсутствие динамической памяти
  • дешево. Бесплатно лучше, но copyleft не будет делать трюк.

Он не должен быть полным парсером - я просто хочу, чтобы вытащить текст из вложенных элементов и иметь достаточно простой способ генерации XML, который не полагается на строки формата. Атрибуты не используются (пока), поэтому библиотеке не нужно их поддерживать. Документы XML будут довольно маленькими, поэтому что-то вроде DOM-like будет хорошо, если оно будет работать с клиентскими буферами (анализ синтаксиса XML на месте будет приятным).

PugXML и TinyXML выглядят довольно близко, но я надеюсь, что кто-то там знает об XML-библиотеке, специально разработанной для встроенных систем на базе C, которые отсутствуют в моем поисковом рассылке.

4b9b3361

Ответ 1

Я не знаю о распределении динамической памяти, но стандартный синтаксический анализатор XML XML expat, который является базовой библиотекой для количество парсеров там.

Ответ 2

Я не уверен, но, возможно, Mini-XML: облегченная библиотека XML поможет вам:

  • Для Mini-XML требуется только компилятор, совместимый с ANSI C.
  • Это бесплатная программа.
  • Его двоичный размер составляет около 100 тыс.
  • Он анализирует весь XML файл и затем сохраняет всю информацию в связанном списке.

Ответ 3

Вы можете использовать кодировщик ASN.1 XER; там есть бесплатный http://lionet.info/asn1c/

Ответ 4

Вы можете использовать один из Gnome.

Ответ 5

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

К сожалению (и я опаздываю на 5 лет) он использует выделение памяти, хотя и хранится как минимум: один буфер для чтения каждой "строки XML" (что находится между < и >, извините;)) и множество небольших буферов для отслеживания имени тега, имен атрибутов и значений и текста (хотя я всегда хотел использовать char[16] или около того для них).

И он использует strdup/strcpy и т.д.

Как я хочу, чтобы кто-то мог использовать его свободно, лицензия BSD.

Ответ 6

Библиотека Xerces-C была бы оптимальной для использования в этом сценарии.

Если это будет довольно маленький XML, почему бы не сгенерировать программно, используя sprintf или другой материал, и использовать функции извлечения строк для его анализа. Но, как уже упоминалось ранее, если немного большой, предложил бы использовать библиотеку Xerces-C, так как это с открытым исходным кодом

Ответ 7

Если это будет довольно маленький XML, почему бы не сгенерировать программно, используя sprintf или другие вещи и использовать функции извлечения строк для синтаксического анализа. Но, как упоминалось ранее, если немного, предложите использовать библиотеку Xerces-c, так как это с открытым исходным кодом