powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Xml parser библиотека для C/C++
25 сообщений из 83, страница 1 из 4
Xml parser библиотека для C/C++
    #38973860
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый.
Существует- ли какая толковая XML парсер библиотека для C/C++, работающая как под Windows так и под Linux, способная воспринимать структуру XML док в виде таблицы? Например, код мог бы выглядеть так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
//Эта часть должна быть в библиотеке:
struct xml_struct
{
    short       level; //XML element level
    char        tag[32]; //tag name
    short       data_type; //output data type
    char*       data; //pointer of the memory, to store data
    (int*)(char* buf); //some function to process the data
}
... processing functions, data and similar library things

//А эта часть уже будет в нашем коде, используя ф-ции библиотеки
    xml_struct CtrlDataRsp[] =
    {
        {0, "some tag", STR,    SomeVarToStoredata,   NULL},
            {1, "some subtag", LONG,    SomeVarToStoredata,   SomeConversionFunction},
        {0, "/some tag", STR,    SomeVarToStoredata,   NULL},
        {NULL}
    };

void main()
{
    char buf[1024]={0};
    //some code to receiva data int buf variable
    parse(CtrlDataRsp, buf); //let's get data from the xml structure to the variables
    let's process data
}



Я уже много библиотек посмотрел, но нигде нет возможности работать с такими таблицами. Я уже с такими библиотеками сталкивался до этого, так что знаю что они существуют. Хотелось бы одну такую использовать в своем проекте. Ато самому уже поднадоело писать да и времени нет
Заранее благодарю.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38973991
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dj_raven,

Рекомендую не лениться пользоваться поиском в Интернет, прежде чем создавать тему. Например, Google сразу же находит это .
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974290
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я это уже видел. Пробегался по сэмплам кода каждой библиотеки, но там все в виде ф-ций сделано. Нет таблиц. Проще самому парсер написать, нежели каждый раз писать новую ф-цию, используя ети библиотеки, по мере дополнения функционала.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974294
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dj_ravenПроще самому парсер написать
Хозяин - барин, как говорится.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974296
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dj_raven,

я так понимаю, нужна автоматическая генерация кода?
Вот здесь список утилит, генерирующих код (есть и C++) по схеме xml.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974372
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, автоматическая генерация кода не нужна. Нужен именно парсер, который умеет процессировать данные по таблицам, которые ты сам пишешь в код, и затем передаешь функции. Она же в свою очередь, идет по этой статической таблице, и смотрит есть ли тэг в полученных данных, если есть, записывает данные в переменную, указанную в таблице для этого тега, если нет, идет дальше. Судя по тому, что, пока-что, никто не понял о чем речь, библиотеки с которыми я сталкивался, были частными наработками. Продолжу писать свой вариант такого парсера :)
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974376
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень понятны ограничения. Зачем длина тега искусственно ограничивается?
Что такое SomeConversionFunction? Где ее состояние? Почему она не учитывает контекст?
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974388
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dj_ravenСудя по тому, что, пока-что, никто не понял о чем речь
Почему же, суть понятна. Вот только подойти к решению задачи можно с разных сторон. В .NET это делается элементарно с помощью XmlSerializer'а (он же deserializer). Сперва генерируем по xml набор классов, потом десериализуем данные, дальше обрабатываем их. А уж какие ConversionFunction использовать - дело десятое. Главное, чтобы было удобно это указать. Хочется в виде таблицы - не вопрос.
Вот только я лично не занимаюсь подобным в C++, поэтому не могу подсказать конкретную библиотеку/код.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974426
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dj_ravenСуществует- ли какая толковая XML парсер библиотека для C/C++, работающая как под Windows так и под Linux, способная воспринимать структуру XML док в виде таблицы?
Что-то типа https://ru.wikipedia.org/wiki/XML-RPC ?
/т.е. xml содержит данные для выполнения каких-либо функций/
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974432
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonНе очень понятны ограничения. Зачем длина тега искусственно ограничивается?
Что такое SomeConversionFunction? Где ее состояние? Почему она не учитывает контекст?
Может и не ограничиваться, это пример
SomeConversionFunction - указатель на ф-цию, которая будет вызываться, вместо стандартной, если не 0.
Насчет контекста, это пример, а не актуальный код
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974436
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petalvikdj_ravenСудя по тому, что, пока-что, никто не понял о чем речь
Почему же, суть понятна. Вот только подойти к решению задачи можно с разных сторон. В .NET это делается элементарно с помощью XmlSerializer'а (он же deserializer). Сперва генерируем по xml набор классов, потом десериализуем данные, дальше обрабатываем их. А уж какие ConversionFunction использовать - дело десятое. Главное, чтобы было удобно это указать. Хочется в виде таблицы - не вопрос.
Вот только я лично не занимаюсь подобным в C++, поэтому не могу подсказать конкретную библиотеку/код.

Спасибо за ответ, но у меня проект кросс платформенный, под Linux и Windows. Поэтому нужны или исходники библиотек, чтобы скомпилировать, или установка под линь и винду
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974441
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир2012dj_ravenСуществует- ли какая толковая XML парсер библиотека для C/C++, работающая как под Windows так и под Linux, способная воспринимать структуру XML док в виде таблицы?
Что-то типа https://ru.wikipedia.org/wiki/XML-RPC ?
/т.е. xml содержит данные для выполнения каких-либо функций/
Нет, тоже не то. Как я уже говорил, в парсере должна быть структура, с помощью которой можно описать структуру входящего XML, и указать переменные, куда записать данные, после этого передать в функцию обработки, из этой же библиотеки, чтобы загрузить данные в переменные.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974483
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dj_ravenСуществует- ли какая толковая XML парсер библиотека ... способная воспринимать структуру XML док в виде таблицы?

Как бы есть одна проблема -- XML -- это не таблица, а дерево тегов.
Поэтому такой библиотеки в принципе быть не может.

Но, однако, есть например gSOAP, оно такое делает.
Но это -- не совсем только лишь парсер XML.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974552
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivdj_ravenСуществует- ли какая толковая XML парсер библиотека ... способная воспринимать структуру XML док в виде таблицы?

Как бы есть одна проблема -- XML -- это не таблица, а дерево тегов.
Поэтому такой библиотеки в принципе быть не может.

Но, однако, есть например gSOAP, оно такое делает.
Но это -- не совсем только лишь парсер XML.
Ну, это по вашему мнению такой библиотеки быть не может, хотя, скорей всего, вы не поняли принцип действия, который я описал. я на двух предыдущих работах имел дело с двумя такими библиотеками, и все прекрасно работало.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974565
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что сейчас мешает использовать "библиотеки с двух предыдущих мест работы"?
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974573
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dj_ravenКак я уже говорил, в парсере должна быть структура, с помощью которой можно описать структуру входящего XML, и указать переменные, куда записать данные, после этого передать в функцию обработки, из этой же библиотеки, чтобы загрузить данные в переменные.
На мой взгляд эта задача аналогична следующей.
Имеем какие-то диалоговые формы /понятно с своим набором полей/.
Диалоговые формы сериализуются.
Задача клиента - принять данные xml в какие-то переменные, которые будут использованы
одной или несколькими функциями.
Оно?
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974578
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovИ что сейчас мешает использовать "библиотеки с двух предыдущих мест работы"?
У меня их нет. Поэтому сижу пишу свою, на тех же принципах (не думал что такое понадобится когда нить). Но, если честно, уже поднадоело, потому решил обратиться к народу с вопросом. Может кто знает где достать библиотеки с подобным принципом действия
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974586
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dj_ravenBasil A. SidorovИ что сейчас мешает использовать "библиотеки с двух предыдущих мест работы"?
У меня их нет. Поэтому сижу пишу свою, на тех же принципах (не думал что такое понадобится когда нить). Но, если честно, уже поднадоело, потому решил обратиться к народу с вопросом. Может кто знает где достать библиотеки с подобным принципом действияНет. Таких библиотек в широком доступе быть не может.
XML это дерево . Дерево можно впихнуть в таблицу если принудительно отрезать ему ветки ниже какого-либо уровня. Но это уже будет чрезвычайно зависимо от конкретной задачи и очень не универсально. Именно поэтому никто таких библиотек не делает.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974589
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlДерево можно впихнуть в таблицу если принудительно отрезать ему ветки ниже какого-либо уровня.
или размножить с другой стороны
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974608
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир2012dj_ravenКак я уже говорил, в парсере должна быть структура, с помощью которой можно описать структуру входящего XML, и указать переменные, куда записать данные, после этого передать в функцию обработки, из этой же библиотеки, чтобы загрузить данные в переменные.
На мой взгляд эта задача аналогична следующей.
Имеем какие-то диалоговые формы /понятно с своим набором полей/.
Диалоговые формы сериализуются.
Задача клиента - принять данные xml в какие-то переменные, которые будут использованы
одной или несколькими функциями.
Оно?
Тоже не то. Попробую еще раз объяснить на примере. Извиняюсь, но все комментарии будут на английском, замучаюсь транслит.нет текст в правильный вид потом переводить
XML structure to parse:
Код: xml
1.
2.
3.
4.
5.
6.
7.
<control data response>
        <controllers>1</controllers>
  	<controller info>
    		<name>ZX1</name>
     		<port>COM1</port>
  	</controller info>
</control data response>


Structure for building xml description table in C/C++:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
typedef struct xml_struct
{
    short       level;
    char        tag[32];
    short       type;
    short       data_type;
    char*       data;
    int            p_cnv_function(char*);
}xml_struct;


Definition of the variables to store data:
Код: plaintext
1.
2.
3.
    short ctrlcnt;
    char    name[16];
    char    port[8];


And here is the table, describing XML structure i have posted above:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
xml_struct rsp_descr[]=
{
   {0, "control data response", OPNTAG, NULL, NULL, NULL},
   {1, "controllers", DATATAG, FLDSHRT, (char*) &ctrlcnt, NULL},
   {1, "controller info", OPNTAG, NULL, NULL, NULL},
   {2, "name", DATATAG, FLDSTR, name, NULL},
   {2, "port", DATATAG, FLDSTR, port, NULL},
   {1, "controller info", CLOSETAG, NULL, NULL, NULL},
   {0, "control data response", CLOSETAG, NULL, NULL, NULL},
   {NULL}
}



After we have all descriptions of possible incoming xml data, let's process them and fill the variables with data
Код: plaintext
1.
parse(xmldatabuffer,  rsp_descr);



В обсчем , вот по такому принципы должна работать библиотека, которую мне хотелось бы найти, самому писать, много времени занимает.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974612
dj_raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И просьба, если не знаете таких библиотек, то луче ничего не пишете, а не пытайтесь меня убедить, что их не может быть в принципе :) Если я её не найду, я её просто напишу сам
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974630
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dj_ravenMasterZivпропущено...


Как бы есть одна проблема -- XML -- это не таблица, а дерево тегов.
Поэтому такой библиотеки в принципе быть не может.

Но, однако, есть например gSOAP, оно такое делает.
Но это -- не совсем только лишь парсер XML.
Ну, это по вашему мнению такой библиотеки быть не может, хотя, скорей всего, вы не поняли принцип действия, который я описал. я на двух предыдущих работах имел дело с двумя такими библиотеками, и все прекрасно работало.

я все отлично понял.
у тебя есть массив структур, сериализованный в xml, и ты хочешь его десериализовать обратно в память.

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

ее лучше всего написать самому на базе SAX парсера, или ты можешь взять что-то типа gSOAP, WSDL, описать свои 30 структур и сгенерировать по ним парсеры, и использовать их как библиотеку.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974633
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dj_ravenMasterZivпропущено...


Как бы есть одна проблема -- XML -- это не таблица, а дерево тегов.
Поэтому такой библиотеки в принципе быть не может.

Но, однако, есть например gSOAP, оно такое делает.
Но это -- не совсем только лишь парсер XML.
Ну, это по вашему мнению такой библиотеки быть не может, хотя, скорей всего, вы не поняли принцип действия, который я описал. я на двух предыдущих работах имел дело с двумя такими библиотеками, и все прекрасно работало.

я все отлично понял.
у тебя есть массив структур, сериализованный в xml, и ты хочешь его десериализовать обратно в память.

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

ее лучше всего написать самому на базе SAX парсера, или ты можешь взять что-то типа gSOAP, WSDL, описать свои 30 структур и сгенерировать по ним парсеры, и использовать их как библиотеку.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974638
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dj_ravenИ просьба, если не знаете таких библиотек, то луче ничего не пишете, а не пытайтесь меня убедить, что их не может быть в принципе :) Если я её не найду, я её просто напишу сам

я уверен, что библиотека ваша была доморощенная.

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

но ты похоже на делфи программировал.
...
Рейтинг: 0 / 0
Xml parser библиотека для C/C++
    #38974640
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странный какой-то XML - с пробелами в именах элементов
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 1 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / Xml parser библиотека для C/C++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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