iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++、Qt分别读写xml文件的方法是什么
  • 140
分享到

C++、Qt分别读写xml文件的方法是什么

2023-07-05 09:07:50 140人浏览 薄情痞子
摘要

这篇“c++、Qt分别读写xml文件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++、Qt分别读写xml文件

这篇“c++Qt分别读写xml文件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++、Qt分别读写xml文件的方法是什么”文章吧。

XML语法

第一行是XML文档声明,<>内的代表是元素,基本语法如以下所示。C++常见的是使用tiny库读写,Qt使用自带的库读写;

<?xml version="1.0" encoding="utf-8" standalone="yes" ?><根元素>   <元素 属性名="属性值" 属性名="属性值">Text</元素>   <元素 属性名="属性值" 属性名="属性值">       <子元素>Text</子元素>   </元素></根元素>

C++使用tinyxml读写xml

首先从网站下载tinyxml库,

将6个文件加载到自己的项目中:

C++、Qt分别读写xml文件的方法是什么

写XML:

新建文件并写入:

#include "include/tinyxml.h"string strPath = "E:/test.xml";TiXmlDocument *writeDoc = new TiXmlDocument; //xml文档指针//文档格式声明TiXmlDeclaration *decl = new TiXmlDeclaration("1.0", "UTF-8", "yes");writeDoc->LinkEndChild(decl); //写入文档//TiXmlElement父类的析构函数内自带delete,所以不用自己释放TiXmlElement *RootElement = new TiXmlElement("Camera");//根元素RootElement->SetAttribute("num", "3"); //属性writeDoc->LinkEndChild(RootElement);TiXmlElement *StuElement = new TiXmlElement("Exposure");//Stu//设置属性StuElement->SetAttribute("time", "A");StuElement->SetAttribute("deley", "30");RootElement->LinkEndChild(StuElement);//父节点写入文档//子元素TiXmlElement *sonElement1 = new TiXmlElement("max");StuElement->LinkEndChild(sonElement1);TiXmlText *maxContent = new TiXmlText("1000");sonElement1->LinkEndChild(maxContent);TiXmlElement *sonElement2 = new TiXmlElement("min");StuElement->LinkEndChild(sonElement2);TiXmlText *minContent = new TiXmlText("80");sonElement2->LinkEndChild(minContent);writeDoc->SaveFile(strPath.c_str());delete writeDoc;

最终生成的xml文件是:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><Camera num="3">    <Exposure time="A" deley="30">        <max>1000</max>        <min>80</min>    </Exposure></Camera>

所以,使用tinyxml函数库中的类去读写根元素,text和属性。这里主要用到的就是四个类和三个函数:

<TiXmlDeclaration><TiXmlElement>     <TiXmlElement>        <TiXmlElement>TiXmlText</TiXmlElement>     </TiXmlElement></TiXmlElement>

四个类:

  • TiXmlDocument:定义一些基本的xml文件的基本操作,包含文件流;

  • TiXmlDeclaration:用于xml文件的第一行,定义xml文件的声明操作;

  • TiXmlElement:不管根元素,元素和子元素,都用此类;

  • TiXmlText:用于元素内的text的操作;

三个函数:

  • LinkEndChild:将子元素嵌在父元素内,还可以将text加到元素内

  • SetAttribute:设置元素内的属性名称与属性值

  • SaveFile:用于保存xml文件;如果xml文件不存在,会自动创建一个;

读XML:

TiXmlDocument mydoc("E:/test.xml");if(!mydoc.LoadFile()){   return;}TiXmlElement *RootElement = mydoc.RootElement();   //获取根元素//遍历根元素下的元素for(TiXmlElement *StuElement = RootElement->FirstChildElement();//第一个子元素StuElement != NULL;StuElement = StuElement->NextSiblingElement())//下一个兄弟元素{        //先找到Exposure元素if (0 == strcmp("Exposure", StuElement->Value())){//遍历Exposure元素下的子元素for (TiXmlElement *sonElement = StuElement->FirstChildElement();     sonElement != NULL; sonElement = sonElement->NextSiblingElement()){//找到max元素,并输出元素内的textif (0 == strcmp("max", sonElement->Value())){string str = sonElement->GetText();cout << str.c_str() << endl;}}}}

C++、Qt分别读写xml文件的方法是什么

Qt读写xml

写XML:

//头文件#include <QDomDocument>QString fileName = "E:/test.xml";QFile file(fileName);if(!file.open(QIODevice::WriteOnly|QIODevice::Truncate))  return;//定义xml文件QDomDocument doc;//定义格式头QDomProcessingInstruction ins = doc.createProcessingInstruction("xml","version = \'1.0\' encoding = \'utf-8\'");//追加元素doc.appendChild(ins);//根节点元素QDomElement root = doc.createElement("Camera");doc.appendChild(root);//在根节点的基础上增加一个子节点QDomElement sonEmt = doc.createElement("Exposure");//创建元素的属性名QDomAttr sonAttr = doc.createAttribute("time");//创建元素的属性值sonAttr.setnodeValue("100");//节点和属性关联sonEmt.setAttributeNode(sonAttr);root.appendChild(sonEmt);//在根节点的基础上增加一个子节点,并设置子节点的textQDomElement sonOneEmt = doc.createElement("max");QDomText sonOneText = doc.createTextNode("1000");sonOneEmt.appendChild(sonOneText);sonEmt.appendChild(sonOneEmt);QDomElement sonTwoEmt = doc.createElement("min");QDomText sonTwoText = doc.createTextNode("80");sonTwoEmt.appendChild(sonTwoText);sonEmt.appendChild(sonTwoEmt);//写入文件QTextStream stream(&file);doc.save(stream,4);//4缩进

这里对应的类有:

<QDomProcessingInstruction><QDomElement>   <QDomElement>QDomText</QDomElement>   <QDomElement QDomAttr>   </QDomElement></QDomElement>

读XML:

#include <QXmlStreamReader>QDomDocument doc;QString fileName = "E:/test.xml";QFile file(fileName);if(!file.open(QIODevice::ReadOnly|QIODevice::Truncate)){    return;}else{    //将文件内容读到doc中    if(!doc.setContent(&file))        file.close();    //返回根元素    QDomElement root = doc.documentElement();    //返回根元素的名称    QDomNode n = root.firstChild();    while(!n.isNull())    {       if(n.isElement())       {         QDomElement e = n.toElement();         QString strXML = qPrintable(e.tagName());         //判断第一个节点         if("Exposure" == strXML)         {             //遍历寻找Exposure元素下的子元素,并找到其text             QDomNodeList list = e.childNodes();             for(int i=0;i<list.count();i++)             {                QDomNode node = list.at(i);                strXML = qPrintable(node.toElement().tagName());                //判断第二个元素                if(node.isElement() && "max"== strXML)                  QString textStr = qPrintable(node.toElement().text());//读取子元素内的text             }         }       }    }}

界面读取的效果为:

C++、Qt分别读写xml文件的方法是什么

以上就是关于“C++、Qt分别读写xml文件的方法是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网其他教程频道。

--结束END--

本文标题: C++、Qt分别读写xml文件的方法是什么

本文链接: https://www.lsjlt.com/news/350876.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++、Qt分别读写xml文件的方法是什么
    这篇“C++、Qt分别读写xml文件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++、Qt分别读写xml文件...
    99+
    2023-07-05
  • C++、Qt分别读写xml文件的方法实例
    目录XML语法C++使用tinyxml读写xmlQt读写xml总结 XML语法 第一行是XML文档声明,<>内的代表是元素,基本语法如以下所示。C++常见的是使...
    99+
    2023-03-06
    c++读写xml文件 qt读写xml文件 qt读取xml
  • C#读写xml文件的方法是什么
    这篇“C#读写xml文件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#读写xml文件的方法是什么”文章吧。C...
    99+
    2023-07-05
  • qt多线程读写文件的方法是什么
    在Qt中,可以使用QThread类来实现多线程读写文件。首先,创建一个自定义的QThread子类,重写其run()函数,该函数会在子...
    99+
    2023-09-22
    qt
  • C#读写xml文件的方法有哪些
    在C#中读写XML文件的方法有以下几种: 使用XmlDocument类:XmlDocument类是System.Xml命名空间中...
    99+
    2024-03-01
    C#
  • Qt读写XML文件的方法详解(含源码+注释)
    目录一、示例XML文件内容二、XML文件的写入三、XML文件的读取3.1 文件读取源码3.2 读取结果示例总结相关文章一、示例XML文件内容 下方为本文所使用的xml文件的内容 &l...
    99+
    2022-11-13
    qt读写xml文件 qt操作xml文件
  • c#中ini文件读写的方法是什么
    在C#中,可以使用System.IO命名空间下的StreamReader和StreamWriter类来读写INI文件。以下是一个简单...
    99+
    2024-03-11
    c#
  • C++OpenCV读写XML或YAML文件的方法详解
    目录前言1.如何使用1.1第一步:XML、YAML文件的打开1.2 第二步:进行文件读写操作1.3 第三步:vector(array)和map的输入和输出1.4 第四步:文件关闭2....
    99+
    2024-04-02
  • C#读写xml文件方法总结(超详细!)
    目录C#写入xml文件1、XmlDocument2、DataSet对象里的值来生成XML文件3、利用XmlSerializer来将类的属性值转换为XML文件的元素值。示例:写入xml...
    99+
    2023-02-21
    c#读写xml文件 c# 读xml c#读取xml文件教程
  • python文件读写的方法是什么
    今天小编给大家分享一下python文件读写的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言:在Python中,...
    99+
    2023-06-29
  • c语言读取文件和写入文件的方法是什么
    在C语言中,读取文件的方法是使用`fopen`函数打开文件,然后使用`fread`或`fgetc`函数来读取文件的内容,最后使用`f...
    99+
    2023-08-09
    c语言
  • linux多进程读写文件的方法是什么
    Linux中多进程读写文件的方法有以下几种:1. 使用文件锁(File Locking):可以使用文件锁来确保在任意时刻只有一个进程...
    99+
    2023-09-27
    linux
  • java文件读取和写入的方法是什么
    Java中读取和写入文件的方法有很多,以下是其中几种常用的方法: 使用File类:可以使用File类来创建、删除、重命名文件,以及...
    99+
    2023-10-23
    java
  • xml和html分别指的是什么类型文件
    这篇文章给大家分享的是有关xml和html分别指的是什么类型文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。XML是一种扩展性标识语言,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型;...
    99+
    2023-06-15
  • C#读写文本文件(.txt)的方法实例
    读取txt文件 如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(filePath) 或指定编码方式 File.ReadAllText(FilePath...
    99+
    2024-04-02
  • Qt读写ini文件的方法详解(含源码+注释)
    目录一、示例Ini文件内容二、Ini文件的写入三、Ini文件的读取3.1 第一种读取方式3.2 第二种读取方式3.3 读取结果示例补充:获取所有节点和key以及节点的遍历相关文章总结...
    99+
    2022-11-13
    qt中ini文件读写 qt解析ini 读取ini文件
  • 使用C/C++读写.mat文件的方法详解
    目录一、创建工程并添加测试代码二、修改CmakeLists文件三、添加环境变量四、令人头秃的错误五、运行结果总结最近需要使用C++来处理matlab生成的数据, 参考了网上一些博客,...
    99+
    2024-04-02
  • python中csv文件读取与写入的方法是什么
    在Python中,我们可以使用`csv`模块来读取和写入CSV文件。下面是使用`csv`模块读取和写入CSV文件的方法:1. 读取CSV文件:```pythonimport csvwith open('file.csv', 'r') a...
    99+
    2023-08-11
    python
  • C#操作xml文件的方法
    本篇内容介绍了“C#操作xml文件的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#操作xml文件实例是如何的呢?让我们先看看问题:已...
    99+
    2023-06-17
  • mysql读写分离实现的方法是什么
    MySQL读写分离是通过将读操作和写操作分别分配到不同的MySQL实例上来实现的。 常见的实现方法有以下两种: 通过MySQL代...
    99+
    2024-04-09
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作