Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/55: Рейтинг темы: голосов - 55, средняя оценка - 4.82
4 / 4 / 2
Регистрация: 13.11.2014
Сообщений: 108

RapidXML уже не торт или ещё торт?

24.01.2023, 10:51. Показов 14875. Ответов 5

Студворк — интернет-сервис помощи студентам
А подскажите, господа, RapidXML уже всё или ещё им можно пользоваться?)
//там как бы и на сайте проекта 2009 год типо последний релиз...
Задумался вот об универсальном парсинге xml в своём проекте и решил в лоб сразу заюзать rapidxml по их же инструкции https://rapidxml.sourceforge.net/manual.html (откуда кстати и исходники прихватил и вместо подключения boost сразу заюзал в проекте). Начал лобать программу. И чёт прям совсем всё плохо(.
Итак вот XML файлик:
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<registry>
    <section id="setting" >
        <parameter id="port1" >875</parameter>
        <parameter id="port2" >876</parameter>
    </section>
</registry>

И вот наброски кода на C++ :
Кликните здесь для просмотра всего текста

C++
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
28
29
30
31
#pragma once
#include <iostream>
#include <fstream>
 
#include "xml/rapid_xml/rapidxml.hpp"
#include "xml/rapid_xml/rapidxml_utils.hpp"
#include "xml/rapid_xml/rapidxml_ext.hpp" //во вот эта вещь уже добавлена [URL="https://stackoverflow.com/questions/14113923/rapidxml-print-header-has-undefined-methods/55408678#55408678"]отсюда[/URL] т.к. иначе я тупо не мог вывести его содержание просто для теста даже
using namespace rapidxml;
 
int main()
{
    std::string fname_xml = "D:\\Settings.xml";
 
    xml_document<> doc;
    try {
        rapidxml::file<> xmlFile(fname_xml.c_str());
        doc.parse<0>(xmlFile.data());
        rapidxml::print(std::cout, doc, 0); //вот здесь уже имеем работу rapidxml_ext.hpp и кстати норм выводит
    }
    catch (parse_error e) {
        std::cerr << "Fail. Parse error " << e.what() << std::endl;
        return 0;
    }
    const xml_node<> *root_node = doc.last_node(); //"registry" first_node()
    std::string test_ssdfjhdgf = root_node->last_node()->name();
    std::cout << root_node->name() << std::endl;
    //нуу и как бы на этом моменте всё приехали, приплыли(
    //Дальше можно и не анализировать ничего, всё равно ничего не получим
    //Т.к. в name() у нас тупо сплошная абракадабра из почти бесконечного НННННННННННННННН
    return 0;
}

Пробовал по всякому, можете заметить по комментариям. Ну вот ни в какую( И указатель * как только не менял и char проставлял и кодировку файла менял. Всё бестолку и выводит одно и тоже.
Кстати с под g++ ещё не пробовал собирать и смотреть, что получится. Но пока для начала хочу завести и оттестить с под VC++, чтобы просто первичные баги по быстрому удобно отловить и тогда уже куда-то выкладывать, даа и + прога вообще задумывается как портативная и под винду планирую также собирать её в родимом VS, так что...
Что скажите, бросать это гиблое дело или там я пару фиксов где-то пропустил?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2023, 10:51
Ответы с готовыми решениями:

Три толстяка едят торт. Сколько времени потребуется, чтобы съесть весь торт вместе?
Доброго времени суток! :) Я вот решаю задачки, но столкнулся с целом рядом проблем: некоторые не засчитываются до конца (70-90 %),...

Купить торт
Задание: Сколькими способами можно заплатить за торт стоимостью n. если можно использовать монеты натуральным номиналом в любом...

Задача про торт
/*Задача интересная и на самом деле не сложная, но в виду того что я кодю вторые сутки, не могу придумать алгоритм. Хочу отметить, что мне...

5
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
01.02.2023, 08:54
КиберСталкер21,
Я попробовал ваш пример у себя и он работает.
Можете запаковать в zip тестовый проект, а также файлы самой rapidxml и приложить к сообщению?
0
4 / 4 / 2
Регистрация: 13.11.2014
Сообщений: 108
01.02.2023, 14:34  [ТС]
Возможно была трабла с кодировкой в самой VC++ и надо было поиграться с кодировкой самого cpp исходника, т.к. по дефолту она в 1251 была.
Но уже стало не до этого и я заюзал pugixml, хоть и ручками потом что-то пришлось делать, ноо как-то ну его нафик, оно так надёжнее и спокойнее) тем более больших массивов данных в xml кидать не собираемся, там разве что настройки, ну и ещё возможно поддержка какой-либо фигни.
А нужно чтобы это всё дело стабильно компилилось и работало и с под linux и с под windows.
0
01.02.2023, 14:38

Не по теме:

КиберСталкер21, такой подход не одобряю (бросать проблему не разобравшись в чем было дело), ну да ладно, дело ваше.

0
4 / 4 / 2
Регистрация: 13.11.2014
Сообщений: 108
01.02.2023, 15:40  [ТС]
Было ясно, что дело тёмно
"Библиотека" 2009 года, не поддерживается и хозяин которой ливнул в неизвестном направлении так, что даже права на неё не может передать какому-либо сообществу для поддержки или ещё чего прочего.
Код уже надо переделывать под новые компиляторы и что-то удалось найти на stackoverflow, а ещё не известно, что придётся допиливать самому, да и вообще что поддерживать из стандартов xml, в курсе которых также желательно быть.
Нуу такой себе прям выбор.
Сейчас ради интереса просто чекнул кодировку, всё норм в UTF-8. Даже попробовал в x86 собрать, всё тоже самое.
Не знаю на что вам исходники, нуу вот держите, пробуйте) там и скрин отладки подкинул, что мне выдаёт и файлик xml.
Вложения
Тип файла: 7z CA_test_RapidXML_0.7z (1.04 Мб, 0 просмотров)
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
01.02.2023, 15:51
Цитата Сообщение от КиберСталкер21 Посмотреть сообщение
Не знаю на что вам исходники
Мне? Незачем
Я спрашивал исходники в рамках вашей темы, соответственно, чтобы помочь вам. Если вам это уже не нужно, то мне тем более.

До этого я пробовал ваш код на linux, текущая версия gcc 10.3.1. Библиотека ставится из репозитория, никаких проблем с компиляцией в любом режиме нет. Я руками ничего не правил (только добавил include <rapidxml_print.h>), проблем с кодировкой тоже нет.

Цитата Сообщение от КиберСталкер21 Посмотреть сообщение
Нуу такой себе прям выбор.
Лично мне это вообще не интересно. В смысле мне все равно будете ли вы использовать эту библиотеку или нет. Важен же сам принцип осознанности выбора.
Впрочем, еще раз повторю, если вам не интересно почему у вас не получилось, то мне тоже. Если бы вы написали, что тема неактуальна до того, как я тут ответил, то я бы ничего просить у вас или как-то участвовать вообще бы не стал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.02.2023, 15:51
Помогаю со студенческими работами здесь

Торт
На свой день рождения Петя купил красивый и вкусный торт, который имел идеально круглую форму. Петя не знал, сколько гостей придет на его...

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

торт
Гена воткнул в торт квадратной формы свечи в n рядов по n штук. Между соседними свечами одинаковое расстояние и по горизонтали и по...

Торт и свечи
Здравствуйте, есть программка, условие которой звучит следующий образом: На квадратном торте N свечей. Можно ли одним прямолинейным...

Квадратный торт
Помогите пожалуйста решить Задача 4. Квадратный торт Ограничение по времени: 1 секунда Ограничение по памяти: 256 мегабайт ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru