powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Посоветуйте либу-генератор xml-парсера
12 сообщений из 12, страница 1 из 1
Посоветуйте либу-генератор xml-парсера
    #38158196
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача.
Есть древовидный xml, нужно сделать парсер на базе либы типа expat, который из него сделает древовидную структуру. Какие-то аттрибуты отпарсит в числа, какие-то в указатели, где-то посоздает нужные структуры, где-то посоздает массивы, и положит в них отпарсеные данные....
Все это делать в рукопашную как-то скучно.

Хотелось бы утилиту, на вход которой поступает файл-описание структуры xml, а на выходе она выдавала бы готовый sax-парсер на сях. Или на плюсах. Есть такое?
...
Рейтинг: 0 / 0
Посоветуйте либу-генератор xml-парсера
    #38158608
Sheraton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Посоветуйте либу-генератор xml-парсера
    #38158667
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sheraton,

нет, не оно. tinyxml - это сам парсер, к тому же dom

а нужен не парсер, парсером будет expat. Нужа либа для облегчения создания "клиентской" части к expat. Той, которая через каллбэки вызывается.
...
Рейтинг: 0 / 0
Посоветуйте либу-генератор xml-парсера
    #38158691
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok,

А просто использовать SAX-парсер, не ?
...
Рейтинг: 0 / 0
Посоветуйте либу-генератор xml-парсера
    #38159698
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokа нужен не парсер, парсером будет expat. Нужа либа для облегчения создания "клиентской" части к expat. Той, которая через каллбэки вызывается.Ну вообще-то, expat тогда и берется если нужна своя уникальная структура хранения данных в памяти. Если нужно стандартное дерево, то libxml2 намного удобнее будет.
...
Рейтинг: 0 / 0
Посоветуйте либу-генератор xml-парсера
    #38159719
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Я просто его и собираюсь использовать. expat - это и есть sax парсер.

White OwlНу вообще-то, expat тогда и берется если нужна своя уникальная структура хранения данных в памяти.
Ну вот я его поэтому и беру!!!

Похоже, никто не понял что хочу.

парсинг xml представляет из себя вбрасывание его в expat, а тот в свою очередь дергает когда надо мои каллбеки:
xml->expat->user_callbacks

Вопрос касается либ облегчающих/автоматизирующих написание user_callbacks секции.
...
Рейтинг: 0 / 0
Посоветуйте либу-генератор xml-парсера
    #38159850
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok,

я так понимаю, вам нужен биндинг XML->C/C++, ищется в гугле по словам XML C binding.
Вот эта ссылка понравилась больше всего.
...
Рейтинг: 0 / 0
Посоветуйте либу-генератор xml-парсера
    #38159896
Sheraton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokMasterZiv,

Похоже, никто не понял что хочу.

парсинг xml представляет из себя вбрасывание его в expat, а тот в свою очередь дергает когда надо мои каллбеки:
xml->expat->user_callbacks

Вопрос касается либ облегчающих/автоматизирующих написание user_callbacks секции.

Действительно, трудно понять, что вы хотите. Даже после ваших разъяснений. Особенно не понятно, зачем вы усложняете по существу банальную задачу. Коллбэки... экспат...
...
Рейтинг: 0 / 0
Посоветуйте либу-генератор xml-парсера
    #38159910
Sheraton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokЗадача.
Есть древовидный xml, нужно сделать парсер на базе либы типа expat, который из него сделает древовидную структуру.


Абсолютно не понятно, как это понять - преобразовать xml-файл в древовидную структуру? Что такое древовидная структура?

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


Имеется в виду, что будет считан xml-файл и все значения будут внесены в необходимые переменные? Как понять делать в рукопашную? Имеется в виду, что есть роботы, которые пишут код вместо программиста?

chabapokХотелось бы утилиту, на вход которой поступает файл-описание структуры xml, а на выходе она выдавала бы готовый sax-парсер на сях. Или на плюсах. Есть такое?

Что такой файл описание структуры xml? Имеется в виду просто xml-файл? Или к xml-файлу есть еще второй файл в котором описывается этот xml-файл? Как понять на выходе готовый парсер на сях? Т.е. считывается xml-файл и затем на основании его содержания генерируется С++ код?
...
Рейтинг: 0 / 0
Посоветуйте либу-генератор xml-парсера
    #38160036
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да!

Датабиндинг мне нужен, продвинутый. Но насколько я понимаю, датабиндинг - это когда тебе в переменные ложатся данные откуда-то. Мне это и нужно, плюс еще надо посоздавать классы через new. Парсер должен понять какие именно класcы создавать - в зависимости от данных в xml.

авторОсобенно не понятно, зачем вы усложняете по существу банальную задачу. Коллбэки... экспат...
я не хочу использовать DOM или VTD по той причине, что мне нужно юзать экономный по памяти способ, т.к. планируется портирование этого кода на микроконтроллер, и памяти в нем очень мало, соизмеримо с размером самой хml.

авторпреобразовать xml-файл в древовидную структуру? Что такое древовидная структура?

http://ru.wikipedia.org/wiki/%D0%94%D1%80%D0%B5%D0%B2%D0%BE%D0%B2%D0%B8%D0%B4%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0

Имеется в виду то, что в xml глубина вложенности - около 15..20, а не просто перечисление тегов на одном уровне. Вручную все уровни прорабатывать утомительно.

авторИмеется в виду, что будет считан xml-файл и все значения будут внесены в необходимые переменные? Как понять делать в рукопашную? Имеется в виду, что есть роботы, которые пишут код вместо программиста?

Да. Считать, там где надо сделать new нужным структурам, настроить все поля, разложить по массивам если это надо и тд и тп.
Делать в рукопашную - писать напрямую руками код делающий проверку каждого уровня иеррархии и что на этом уровне надо делать, и соответственно - делать то что нужно. Да, имеется в виду некоторый "робот" создающий и раскладыващий xml по моим структурам.


авторЧто такой файл описание структуры xml?

Предполагается - некий небольшой файл, написание которого существенно быстрей и проще написания кода парсера напрямую руками. Файл содержит правила что куда класть. Например, аннотированную структру, например как то так (в каментах - на самом деле псевдокод)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Motor[] motors; //сюда создавай и клади струкуру, пока встречаешь тэги motor, для расширения юзай realloc
int motorCount;//тут инкременти при каждом создании мотора

//начинай парсить тег */Automobile с создания этой структуры
struct Automobile{
int doorsCount; //сюда положи число из одноименного аттрибута
Motor* motor; //сюда положи адрес мотора, найденый и сопоствавленный по аттрибуту motor
}

struct Motor{
string name; //сюда положи название мотора из одноименного аттрибута. По нему же веди сопоставление
int cylinderCount; //тут инкременти, пока встречаются тэги cylinder
Cylinder[] cylinders;
}

struct Cylinder{...}



Дальше запустил утилиту - она тебе сгенерила парсер, в котором ничего не забывает, все переменные инициализированы или по умолчанию или из xml, массивы настроены, указатели настроены и тд и тп.

[SRC c++]Имеется в виду просто xml-файл? Или к xml-файлу есть еще второй файл в котором описывается этот xml-файл? [/quote]
Да хоть что-нибудь, что может сократить обьем скучной работы.

[SRC c++]Как понять на выходе готовый парсер на сях? Т.е. считывается xml-файл и затем на основании его содержания генерируется С++ код? [/quote]
Да, как вариант. Возможно, некий файл-хелпер, подсказывающий как этот код генерить. Но это - лишь вариант. Суть в том что нужно нечно, осущеcтвляющее создание классов и настройку их полей по xml моего формата.

Завтра буду гуглить биндинг на С.
...
Рейтинг: 0 / 0
Посоветуйте либу-генератор xml-парсера
    #38160063
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok,

вот здесь список утилит, который на основе XmlSchema генерируют исходный код для разных языков. Есть там несколько для C++.
...
Рейтинг: 0 / 0
Посоветуйте либу-генератор xml-парсера
    #38160728
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvik,

да, это оно! Спасибо.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Посоветуйте либу-генератор xml-парсера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]