Intruder
IntruderТам. 19, 2019, 6:18 Т.Ж.

Как заменить в xml только часть данных?

Добрый день, уважаемые Гуру в Qt!

У меня вопрос заключается в том, что как реализовать замену определенных данных в XML-файле на другие данные. При этом переписывать сам файл целиком не надо. В каком направлении двигаться? И если есть примеры, то можно показать как это примерно реализается.

Заранее благодарен за помощь.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

4
ВЖ
  • Там. 19, 2019, 6:51 Т.Ж.

Возможно заюзать QDomDocument
https://doc.qt.io/qt-5/qdomdocument.html

    Evgenii Legotckoi
    • Там. 19, 2019, 6:55 Т.Ж.
    • (өңделген)

    Добрый день.

    Думаю, что считывать полностью файл в любом случае придётся. Вопрос в том, насколько большие изменения нужно делать.

    Если находить конкретные данные и их не так уж и много, то можно и регулярным выражением.

    А так уж считывать через QDomDocument, искать там данные и заменять их, а потом записывать файл.

      Intruder
      • Там. 19, 2019, 7:46 Т.Ж.

      Евгений, добрый день.

      О количестве перезаписываемых данных я пока не могу судить. Поэтому по поводу регулярных выражений сейчас гооврить что-то сложно.
      А вот что касается того, что нужно читать весь документ - это понятно. Для меня не совсем понятен момент, который связан с тем как открывать файл, с какими атрибутами? Думаю, что нужно будет не только писать изменения конкретных тегов, но и добавлять новые.

      Заранее благодарен за ответ.

        Pavel K.
        • Там. 19, 2019, 9:29 Т.Ж.
        • (өңделген)

        посмотрите тут , практически тоже самое делал(пробегал по документу). А так в принципе :

        QFile file(Path);
        if(file.exist){
            file.open(QIODevice::WriteOnly); // ReadWrite
            foreach(auto &x: value ) { // как в примере (PostListVm.cpp + JsonParser.cpp)
                file.write(someData()); // parsing file
                emit recordChanged();
            }
            emit fileChanged();
            file.close();
        } else {
        qDebug() << "error :No file";
        
        

        Вы можете тупо по "ключам" парсить док

          Пікірлер

          Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
          Кіріңіз немесе Тіркеліңіз
          Г

          C++ - Тест 001. Первая программа и типы данных

          • Нәтиже:66ұпай,
          • Бағалау ұпайлары-1
          t

          C++ - Тест 001. Первая программа и типы данных

          • Нәтиже:33ұпай,
          • Бағалау ұпайлары-10
          t

          Qt - Тест 001. Сигналы и слоты

          • Нәтиже:52ұпай,
          • Бағалау ұпайлары-4
          Соңғы пікірлер
          G
          GoattRockҚыр. 3, 2024, 10:50 Т.Ж.
          Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
          d
          dblas5Шілде 5, 2024, 8:02 Т.Ж.
          QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
          k
          kmssrАқп. 8, 2024, 3:43 Т.Қ.
          Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
          АК
          Анатолий КононенкоАқп. 4, 2024, 10:50 Т.Қ.
          Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
          Енді форумда талқылаңыз
          Evgenii Legotckoi
          Evgenii LegotckoiМаусым 24, 2024, 12:11 Т.Қ.
          добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
          F
          FynjyШілде 22, 2024, 1:15 Т.Ж.
          при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
          BlinCT
          BlinCTМаусым 24, 2024, 10 Т.Қ.
          Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
          BlinCT
          BlinCTМамыр 5, 2024, 2:46 Т.Ж.
          Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
          Evgenii Legotckoi
          Evgenii LegotckoiМамыр 2, 2024, 11:07 Т.Ж.
          Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

          Бізді әлеуметтік желілерде бақылаңыз