使用tinyxml解析和修改XML文件

news2025/1/10 16:24:18

首先要清楚XML文件包含哪些元素:

他是由元素、文本或者两者混合物组成。元素可以拥有属性,元素是指从开始标签到结束标签的部分。

<?xml version="1.0" encoding="UTF-8" ?>
<books>
          <book id="1001">
           
                <name>面纱</name>
                <info>请记住我,虽然再见必须说</info>
          </book>
           <book id="1002">
                <name>人生第一次</name>
                <info>愿他们、我们的一生平淡而有意义</info>
          </book>
</books> 

开始操作

1.在网上下载到tinnyxml的源码

 2.导入tinyxml的头文件

#include "./TinyXML/tinyxml.h"

解析方法:


QString XMLreadwrite::parseIPAddress() const
{
    QList<QString> nodeList;
    nodeList.append("net");
    nodeList.append("fix_ip");
    QString attrText = "ip";

    TiXmlNode *pNode = (TiXmlNode*)FindTextNode(nodeList);
    QString data = ParseNodeData(pNode, attrText);

    return data;
}

修改方法:


void XMLreadwrite::ModifyNodeData(TiXmlNode *pNode, QString text, QString data) const
{
    for(pNode = pNode->FirstChild();
        pNode;
        pNode = pNode->NextSibling())
    {
        if(QString(QLatin1String(pNode->Value())) == text)
        {
            qDebug()<<"......."<<text<<data;
            const char cData[1024] = {0};
            memcpy((void*)cData,data.toStdString().c_str(),data.size());
            //首先清除所有文本
            pNode->Clear();
            //然后插入文本
            TiXmlText  *pValue = new TiXmlText(cData);
            pNode->LinkEndChild(pValue);
            qDebug()<<"Modified successfully"<<QString(QLatin1String(pNode->ToElement()->GetText()));
        }
    }
}

解析例子:

QString XMLreadwrite::parseCodeFormat() const
{
    QList<QString> nodeList;
    nodeList.append("param_video");
    QString attrText = "attr_format";

    TiXmlNode *pNode = (TiXmlNode*)FindTextNode(nodeList);
    QString nodeAttr = QString(QLatin1String(pNode->ToElement()->Attribute("name")));
    QString data = "";
    if(nodeAttr == "Visible")
    {
        data = ParseNodeData(pNode, attrText);
    }

    return data;
}

修改例子:

void XMLreadwrite::modifyCodeFormat(QString data)
{
    QList<QString> nodeList;
    nodeList.append("param_video");
    QString attrText = "attr_format";

    TiXmlNode *pNode = (TiXmlNode*)FindTextNode(nodeList);
    QString nodeAttr = QString(QLatin1String(pNode->ToElement()->Attribute("name")));
    if(nodeAttr == "Visible")
    {
        ModifyNodeData(pNode, attrText, data);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/831297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业邮箱费用详解!了解企业邮箱的费用及其相关信息

对于需要可靠的邮箱平台的企业来说&#xff0c;企业邮箱可能是最好的解决方案。有许多供应商提供企业邮箱服务&#xff0c;他们通常每月都有相应的费用。 在考虑企业邮箱的成本时&#xff0c;有几件事要记住。首先&#xff0c;您应该考虑使用邮箱服务的用户数量&#xff0c;因为…

【Leetcode】73.矩阵置零

一、题目 1、题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例1: 输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例2: 输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1…

[Linux]手把手教你制作进度条小程序

[Linux]制作进度条小程序 文章目录 [Linux]制作进度条小程序C语言中的\n和\r字符缓冲区的刷新策略进行进度条代码编写 C语言中的\n和\r字符 C语言中字符分为两种: 可显字符控制字符 其中可显字符就是字符a这类的字符&#xff0c;控制字符就是\n这种控制字符。 对于我们制作…

车载开发智能座舱技术——【Surface渲染流程】

SurfaceFlinger智能座舱技术是一种车载开发中的创新技术&#xff0c;它能够实现高效的图形渲染和多媒体处理&#xff0c;为驾驶员和乘客提供更好的车内体验。本文将介绍SurfaceFlinger智能座舱技术的概念和原理&#xff0c;并详细解析Surface的渲染流程和相关代码示例。 一、S…

解决多开 sap 瓶颈 需要用同样的权限 打开,都是administrators 或者都是 普通用户

设置排程情况下&#xff0c;用户登录时运行&#xff0c;用最高权限运行 If my problem description is very simple, sorry. But I found the reason: the startup permissions of sap and python are not the same. For example, both of these should be run with admini…

如果室温超导被验证成功,它会是算力的永动机吗?

近期&#xff0c;有韩国科学家团队表示&#xff0c;他们发现了全球首个室温超导材料。室温超导&#xff0c;即在室温条件下实现的超导现象。而“超导”是指导体在某一温度下&#xff0c;电阻为零的状态。 如果室温超导被验证成功且可以被应用&#xff0c;没有电阻的超导体基本不…

Spring Data JPA 的开发神级IDEA插件 -- JPA Buddy

1. 概述 JPA Buddy是一个广泛使用的IntelliJ IDEA插件&#xff0c;面向使用JPA数据模型和相关技术&#xff08;如Spring DataJPA&#xff0c;DB版本控制工具&#xff08;Flyway&#xff0c;Liquibase&#xff09;&#xff0c;MapStruct等&#xff09;的新手和有经验的开发人员…

SAP从入门到放弃系列之凭证批次(Documentary Batches)-Part1

目录 一、概述二、配置三、测试3.1 采购入库3.2 生产投料3.3 批次追溯 一、概述 凭证批次只是一个虚拟的批次&#xff0c;库存是不做批次管理的&#xff0c;但是通过虚拟批次可以做到物料的可追溯性。相对启用批次管理来说库存管理成本比&#xff0c;工作量更小&#xff0c;复…

通过私有化部署的企业智能名片,作用究竟有多大?

“在21世纪最为重要的是什么&#xff1f;” “是人才&#xff0c;更是人脉。” 为了拓展人际关系&#xff0c;建立更密切的联系和合作联络。在商务交流中&#xff0c;互相交换正式、可信的名片是必不可少的一环。 但是&#xff0c;你有没有意识到呢&#xff1f; 每年全球交换…

Pre-trained models for natural language processing: A survey(NLP领域预训练模型研究综述)

Pre-trained models for natural language processing: A survey(NLP领域预训练模型研究综述)_笔记 零、摘要 简洁的介绍了语言表征学习的研究进展&#xff0c;以及描述了如何将PTMs&#xff08;pre-training models&#xff09;应用于下游任务&#xff0c;并概述了未来的潜在…

树莓派更换软件源

​ 目录 1、备份源列表&#xff1a;在更改软件源之前&#xff0c;最好备份你当前的源列表文件。 2、编辑源列表文件&#xff1a;使用文本编辑器&#xff08;例如nano或vi&#xff09;打开/etc/apt/sources.list文件。 3、更换软件源&#xff1a;在文件中找到原始的官方源地…

串讲Maven本地仓库、私服、中央仓库

前言介绍 近期整理材料和搭建平台环境&#xff0c;重新系统了解了Maven一整套流程。特整理如下&#xff1a; 图1 图中分本地仓库和远程仓库&#xff1a; 本地仓库&#xff1a;自己电脑上存储资源的仓库&#xff0c;连接远程仓库获取资源。 远程仓库&#xff1a;非本机电脑上…

【多模态】ALIGN——使用噪声文本数据进行视觉语言感知预训练

ALIGN: A Large-scale ImaGe and Noisy-text embedding 目录 &#x1f36d;&#x1f36d;1.网络介绍 &#x1f36d;&#x1f36d;2.大规模噪声图像文本数据集 &#x1f438;&#x1f438;2.1图像过滤器 &#x1f438;&#x1f438;2.2文本过滤器 &#x1f36d;&#x1f3…

ubuntu服务器配置ftp服务

需求&#xff1a;配置ftp服务用于在windows电脑上直接浏览、下载、上传ubuntu服务器上的文件&#xff0c;用于文件共享&#xff0c;方便实用 效果&#xff1a;用户打开windows资源管理器后输入ftp://xxx.xxx.xxx.xxx &#xff08;公网IP地址&#xff09;后&#xff0c;即可浏览…

《在细雨中呼喊》阅读笔记

《在细雨中呼喊》阅读笔记 2023年2月5号在家读完&#xff0c;本书就是以作者者回忆的形式来写&#xff0c;男一号叫孙光林&#xff0c;有一个哥哥孙光平&#xff0c;一个弟弟叫孙光明&#xff0c;父亲叫孙光才。书中写了四篇故事。 第一篇写的就是作者对于老家生活的回忆 小的时…

问道管理:股票总市值高好还是低好?

股票的总市值是指公司一切流通股票的总价值。在股票交易商场中&#xff0c;总市值一般是考虑一家公司在商场上的规模和影响力的重要指标之一。可是&#xff0c;总市值在股票投资中究竟是高好仍是低好呢&#xff1f;以下从几个视点进行分析。 商场份额视点 从商场份额的视点来看…

【解放ipad生产力】如何在平板上使用免费IDE工具完成项目开发

前言 很多人应该会像我一样吧&#xff0c;有时候身边没电脑突然要写项目&#xff0c;发现自己的平板没有一点作用&#xff0c;毫无生产力可言&#xff0c;在了解了几家IDE工具后&#xff0c;给大家罗列出来&#xff0c;根据自己的需求进行挑选 现在IDE工具不少&#xff0c;像l…

easyexcel 导出下拉框

官方文档&#xff1a;https://github.com/alibaba/easyexcel 目标&#xff1a;导出的 excel 是下拉框 maven 导入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version> &…

右值引用带来的效率提升(C++11)

文章目录 一.左值引用和右值引用二.C11区分左值和右值的语法设计意义--对象的移动构造和移动赋值场景分析1:C11之前C11之后 场景分析2:函数std::move右值引用的广泛使用 三.引用折叠 一.左值引用和右值引用 左值:可以取到地址的对象(可以出现在赋值符号的左边),对左值的引用称…

“Rust难学”只是一个谎言

近年来Rust的存在感日渐升高&#xff0c;但是其陡峭的学习曲线似乎总是令人望而生畏。不过谷歌的一项内部调查表明&#xff0c;关于Rust的“难学”或许只是一种谣传。 Rust到底难不难学&#xff1f;谷歌有了Go&#xff0c;为何还要支持Rust&#xff1f;频频陷入内斗的Rust领导…