QT XML文件 修改节点

使用Qt的QDomAttr类进行XML属性操作 除了访问和修改属性的值之外,QDomAttr类还提供了其他一些有用的方法,例如获取属性的名称和拥有该属性的元素对象。然后,我们使用createAttribute()方法创建了一个名为"Version"的属性,并设置了属性值为"1.0"。在Qt中,QDomAttr类提供了一种方便的方式来处理XML文档中的属性。然后,我们可以使用QDomElement类的attributeNode()方法来获得一个属性的QDomAttr对象。除了访问和修改属性的值之外,QDomAttr类还提供了其他一些有用的方法。 阅读详情

感谢:l270378034的帮助

源xml文件:

<kdevelop>
   <general>
     <author>zeki</author>
     <email>caizhiming@tom.com</email>
   </general>
</kdevelop>

源程序:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
     changeSave();
}

MainWindow::~MainWindow()
{
    delete ui;
}
bool MainWindow::openXmlFile(QString FilePath)
{
    QFile file( FilePath );
        if( !file.open( QFile::ReadOnly | QFile::Text  ) )
        {
            qDebug() << QObject::tr("error::ParserXML->OpenXmlFile->file.open->%s\n") << FilePath;

            return false;
        }

        if( !m_doc.setContent( &file ) )
        {
            qDebug() << QObject::tr("error::ParserXML->OpenXmlFile->doc.setContent\n") << FilePath;

            file.close();
            return false;
        }
        file.close();
        return true;
}
bool MainWindow::changeSave()
{
    if(!openXmlFile("/home/qust/qt/XML/2.xml"))
        {
            return false;
        }
        //修改保存xml
    QDomElement root = m_doc.documentElement();
       if(root.tagName()!= "kdevelop")
           return false;
       QDomNode n = root.firstChild();
       while ( !n.isNull() )
       {
           QDomElement e = n.toElement();
           if( !e.isNull())
           {
                       if( e.nodeName() == "general" )
                       {
                           QDomNodeList list = e.childNodes(); //获得元素e的所有子节点的列表
                           for(int a=0; a<list.count(); a++) //遍历该列表
                           {
                               QDomNode node = list.at(a);
                               if(node.isElement())
                               {
                                   if( node.nodeName() == "author" )
                                   { QDomNode oldnode = node.firstChild();     //标签之间的内容作为节点的子节点出现,得到原来的子节点
                                       node.firstChild().setNodeValue("csdn");   //用提供的value值来设置子节点的内容
                                       QDomNode newnode = node.firstChild();     //值修改过后
                                       node.replaceChild(newnode,oldnode);      //调用节点的replaceChild方法实现修改功能
                                   }
                                   if( node.nodeName() == "email" )
                                   {
                                       QDomNode oldnode = node.firstChild();
                                       node.firstChild().setNodeValue("test@tom.com");
                                       QDomNode newnode = node.firstChild();
                                       node.replaceChild(newnode,oldnode);
                                   }
                               }
                           }
                       }
                   }
           n = n.nextSibling();
             }
             QFile filexml("/home/qust/qt/XML/2.xml");
             if( !filexml.open( QFile::WriteOnly | QFile::Truncate) ){
                 qWarning("error::ParserXML->writeOperateXml->file.open\n");
                 return false;
                    }
                    QTextStream ts(&filexml);
                    ts.reset();
                    ts.setCodec("utf-8");
                    m_doc.save(ts, 4, QDomNode::EncodingFromTextStream);
                    filexml.close();
                    return true;


}

运行后:

<kdevelop>
  <general>
    <author>csdn</author>
    <email>test@tom.com</email>
  </general>
</kdevelop>


QDomNode QDomNode::nextSibling () const

Returns the next sibling in the document tree. Changing the returned node will also change the node in the document tree.

If you have XML like this:

 <h1>Heading</h1>
 <p>The text...</p>
 <h2>Next heading</h2>


and this QDomNode represents the <p> tag, nextSibling() will return the node representing the <h2> tag.


sibling 1.同层级 2.同辈 3.兄弟或姊妹。 4.同胞 Sibling 1.同胞兄妹


QT对XML增删查改读取,节点自定义,键值自定义 QT对XML进行,创建文件,添加节点,查找节点,删除节点,在节点下添加键值,读取指定节点下键值。最多支持4层节点。如果要需要在多级的节点进行操作,可以参照我的函数进行添加重载函数,很方便的。 立即下载

相关推荐

Qt5 XML文件的解析,增删改查节点。

主要是Qt5 对XML文件的解析。 有解析,重点是增加,删除,查询,修改功能。 还是很简单的,希望对大家有帮助。

Qt Xml的读、写、修改、删除

Qt关于Xml文件的创建写入、读取、添加、修改

qq_44084616的博客 4365

XML文件修改节点属性值(多种方法)

有关XML文件的节点属性值修改在使用过程中经常会遇到过,感兴趣的朋友可以参考下本文,希望对你有所帮助

Qt XML文件读、写、修改

Qt XML文件读、写、修改操作代码

奔跑的小仙女 3749

Qt5.12.12安卓开发环境搭建:Windows下避开SDK版本坑的保姆级教程

本文提供Qt5.12.12在Windows下搭建Android开发环境的详细教程,重点解决SDK版本兼容性问题,特别是cmdline-tools与JDK8的匹配陷阱。通过精准选择组件版本、手动配置路径和修复常见错误,帮助开发者高效完成环境配置,适用于Qt跨平台移动开发。

weixin_33737774的博客 542

京东云鼎环境配置与API安全接入实战:ISV服务商如何搞定数据加密与商家授权

本文详细介绍了京东云鼎环境配置与API安全接入的实战指南,帮助ISV服务商解决数据加密与商家授权等核心问题。通过京东开放平台的应用申请流程,结合多租户数据隔离策略和自动化授权实现,确保电商生态中的安全高效运营。文章还提供了避坑指南,助力开发者规避常见配置错误。

weixin_28705087的博客 353

Qt的XML封装类QXmlWrapper,实现XML文件的创建、删除以及元素节点的增加、删除、修改与查找等。

最近使用Qt开发软件,需要用到xml用于保存软件配置信息,发现Qt的XML使用起来不是很方便,所以基于QDomDocument类进一步封装了QXmlWrapper类。 注:博主用的Qt版本是4.8.5,开发环境是Qt Creator。 一、XML文件的创建、删除与重命名 1.XML文件的创建 bool QXmlWrapper::CreateXmlFile(const QStri

奔跑的码农 3321

【论文笔记】Reaching agreement in the presence of faults (EIG)

1 问题定义 2 交互一致性 3 单点故障 m=1 n=4 4 多点故障(n&amp;gt;=3m+1) 计算过程 m=2 n=7 5 n&amp;lt;3m+1不能达成协定 6 带认证的算法 7 总结 这篇论文在1980年发表,是1982年著名的拜占庭将军问题论文的前身。作者Leslie Lamport是2013图灵奖得主,两篇论文引用次数分别为5000+和2000+。该论文提出的算法现在被...

zjwreal 2994

Qt读写xml文件QDomElement

Qt提供了QDomElement 类用于完成对xml文件的读取和写入。 读文件 boolloadFile(QStringfilename) { m_fileName=filename; if(!m_dom.isNull()) m_dom.clear(); QFilefile(filename); if(!file.open(QIODevice::ReadOnly)) { std::cerr<<...

echo-linxi博客 4826

从TCGA官网获取新版count数据并精准转换为TPM的实战指南

本文详细介绍了从TCGA官网获取新版count数据并精准转换为TPM的实战指南。通过TCGAbiolinks工具下载原始count数据,结合GENCODE v36注释文件计算基因有效长度,最终实现count到TPM的标准化转换,确保数据完整性和分析可靠性。文章包含完整代码示例和常见问题解决方案,特别适合生物信息学研究人员参考。

weixin_27310417的博客 284

数字IC后端PPA优化实战:Innovus中Timing一致性策略与Module Region布局技巧

本文深入探讨了数字IC后端设计中PPA优化的核心挑战,重点解析了Innovus与PrimeTime之间Timing不一致的根本原因。通过实战案例,详细介绍了在Innovus中设置Timing Margin、Derate以及RC Scale Factor等关键策略,以校准时序视图。同时,文章分享了利用Module Region进行物理布局规划的技巧,将关键模块约束在最优区域,并结合Group Path等进阶方法,有效提升时序收敛效率与PPA结果的可预测性。

f9g0h的博客 2689

解析Xml文件并修改QDomDocument的值

【代码】解析Xml文件并修改QDomDocument的值。

weixin_51883798的博客 1565

怀旧党必备!用iPhone4s重温iOS6的保姆级教程(含游戏资源包)

本文提供了一份详细的iPhone4s降级至iOS6.1.3的保姆级教程,包括设备准备、越狱操作、系统降级及资源优化全流程。通过自制固件和越狱工具,用户可以重温经典的拟物化设计和流畅体验,同时获取经典游戏资源包,打造复古游戏神器。

nft7creator的博客 885

QT中如何实现XML文件的创建、增加、修改、删除功能。

一、首先咱们得认识处理XML的方法有那些,QT提供了那些函数用于处理。                        我们知道对XML的操作有两种方法,即DOM方式和SAX方式。二者主要区别是:DOM实现方式操作非常简单,但不适合处理过大文件;而SAX实现方式是能处理很大的XML文件,但是需要开发者写一些复杂的代码。Qt提供了对应于这两种用于读取、操作和编写XML的实现类,分别是QDomDoc

duke0226的专栏 2634

Win11移动热点连接故障排查:从IP配置失败到网络共享的全面解决指南

本文提供了Win11移动热点连接故障的全面排查指南,重点解决手机连接时卡在“获取IP地址”或提示“IP配置失败”的问题。文章从基础检查(如确认网络连接、选择正确共享源)入手,深入讲解了核心的网络适配器共享设置、关键系统服务检查、防火墙配置以及终极解决方案——网络重置。通过系统性的步骤,帮助用户彻底修复Win11移动热点无法共享网络的问题。

alice7model的博客 788

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Qt下Dom方式修改xml节点的方法 (简化版)

mainwindow.h文件: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainW

alan00000的专栏 1196

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

QT与xml

xml: XML有两个先驱:SGML和HTML,但是两者处理数据的能力较差,于是有了xml的诞生。 XML声明是XML文档的第一句,其格式如下: <?xml version="1.0" encoding="utf-8"?> 在XML文档中,大小写是有区别的。<p>和<P>是不同的标记。 良好格式的XML文档必须有一个根元素,就是紧接着声明后面建立的第一个元素,...

人总是要有梦想的QAQ的博客 1231

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Qt修改xml文件

<taskpackage styleId="styles/2dc70235-e48b-4e11-b074-3c3f773ae1f3" id="3333" type="normal"> <playvideo isFlash="false"> <group times="5618" filename="groupList" playT...

weixin_30537391的博客 757

Qt操作xml文件(增删改功能)

这个例子是在根据网上博客《Qt数据库(XML)》改写的一个操作XML的实现。 借鉴了很多里面的代码,大家可以结合上面的博客对照,相信你肯定会对XML的操作熟练起来。 我建立的是Qwidget项目,没有添加ui文件,输出内容都放在应用程序输出中(qDebug)。 XMLtest.pro文件代码: #-----------------------------------------------

许威威的专栏 1万+

QT之XML文件解析DOM

QT使用DOM方式解析XML文档

qq_39295354的博客 1621

Qt中xml模块的使用

xml文件读写,QDir,QFile,QTextStream

bjarne02的博客 638

Qt 史上最详细 - “操作XML文件” - 笔记

Qt 史上最详细 - “操作XML文件” - 笔记

love_dear的博客 2654

Qt 读写XML文件

1、读操作: QDomDocument doc( “mydocument " ); QFile file( "ccc.xml" ); if ( !file.open( IO_ReadOnly ) ) { return; } if ( !doc.setContent( &file ) ) ...

weixin_30807677的博客 81
上一篇: qt 国际化tr()
下一篇: QSqlDatabase: QMYSQL driver not loaded 解决方法
丁老师的技术随笔
博客等级 码龄15年 390粉丝 198原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值