XML文件简介

  • XML - EXtensible Markup Language,可拓展标记语言

Qt中加载XML模块

.pro 文件中添加

QT += xml

Qt的XML访问方式

引用:https://blog.csdn.net/liang19890820/article/details/52805902

Qt 提供了两种访问 XML 文档的方式:DOM 和 SAX。

  • DOM 方式:将 XML 文档转换为树形结构存储到内存中,再进行读取,消耗的内存比较多。此外,由于文档都已经存储到内存,所以需要频繁实现修改等操作时,使用起来比较方便。
  • SAX 方式:相比于 DOM,SAX 是一种速度更快,更有效的方法,它逐行扫描文档,一边扫描一边解析(由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中,这对于大型文档的解析是个巨大优势)。而且相比于 DOM,SAX 可以在解析文档的任意时刻停止解析。但操作复杂,很难修改 XML 数据。

DOM

描述
QDomAttr 表示一个 QDomElement 的属性
QDomCDATASection 表示一个 XML CDATA 部分
QDomCharacterData 表示 DOM 中的一个通用字符串
QDomComment 表示一个 XML 注释
QDomDocument 表示一个 XML 文档
QDomDocumentFragment QDomNodes 树,通常不是一个完整的 QDomDocument
QDomDocumentType 表示文档树中的 DTD
QDomElement 表示 DOM 树中的一个元素
QDomEntity 代表一个 XML 实体
QDomEntityReference 代表一个 XML 实体引用
QDomImplementation DOM 实现的功能的信息
QDomNamedNodeMap 包含一个节点集合,节点可以通过名字来访问
QDomNode 一个 DOM 树中所有节点的基类
QDomNodeList QDomNode 对象列表
QDomNotation 代表一个 XML 表示法
QDomProcessingInstruction 代表 XML 处理指令
QDomText 表示解析的 XML 文档中的文本数据

说明:

  • XML的每级元素(QDomElement),也可以称之为结点(QDomNode),QDomElement继承自QDomNode;
  • QDomNode可以使用toElement()方法转换成QDomElement;

常用方法

QDomDocument doc("test_xml");
QFile xml_file("FiltersConf.xml");
if(!doc.setContent(&xml_file)) //也可以传入字符串
{
qDebug()<<"set content fail";
return 0;
}
QDomElement root_element = doc.documentElement();//获取xml文件的根元素
qDebug()<<root_element.tagName(); //使用tagName()方法获取元素的标签名
QDomNode node = root_element.firstChild();//获取第一个子结点
QString attr = node.toElement().attribute("name");//获取属性
while(!node.isNull())
{
qDebug()<<"-"<<node.toElement().tagName();
node = node.nextSibling(); //获取同级的结点
}

写入XML

QDomDocument document;
//xml头部的<?xml version="1.0" encoding="UTF-8"?>
QDomProcessingInstruction instruction = document.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
document.appendChild(instruction);
QDomElement root_node = document.createElement("transpond");//创建根结点
document.appendChild(root_node); //添加根结点 QDomElement element = document.createElement("machine");//创建元素结点
element.setAttribute("type", "machine");
root_node.appendChild(element);//元素结点添加到根结点下 QDomElement item_element = document.createElement("machine-item");//创建item结点
item_element.setAttribute("type", "11");
item_element.setAttribute("name", "22");
item_element.setAttribute("device-code", "33");
item_element.setAttribute("ip", "44");
item_element.setAttribute("sync-time", "55"); //写入文件
QFile file(pConfigManager->GetMachineInfoFile());
if(!file.open(QIODevice::ReadWrite | QIODevice::Truncate))
{
return false;
}
QTextStream in(&file);
document.save(in, 4);
file.close();

Qt之xml文件解析的更多相关文章

  1. 通过正则表达式实现简单xml文件解析

    这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...

  2. 八、Android学习第七天——XML文件解析方法(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...

  3. android基础知识13:AndroidManifest.xml文件解析

    注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

  4. Android之AndroidManifest.xml文件解析

    转自:Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文 ...

  5. 9.XML文件解析

    一.XML简介 XML(EXtensible Markup Language),可扩展标记语言 特点:XML与操作系统.编程语言的开发平台无关 实现不同系统之间的数据交换 作用:数据交互 配置应用程序 ...

  6. Python实现XML文件解析

    1. XML简介 XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据,已经日趋成为当前许多新生技术的核心,在不同的领域都有着不同的应用.它是web ...

  7. Python3将xml文件解析为Python对象

    一.说明 从最开始写javascript开始,我就很烦感使用getElementById()等函数来获取节点的方法,获取了一个节点要访问其子孙节点要么child半天要么就再来一个getElementB ...

  8. QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写   ...

  9. XML文件解析-DOM4J方式和SAX方式

    最近遇到的工作内容都是和xml内容解析相关的. 1图片数据以base64编码的方式保存在xml的一个标签中,xml文件通过接口的方式发送给我,然后我去解析出图片数据,对图片进行进一步处理. 2.xml ...

随机推荐

  1. 如何将一个div水平垂直居中?6种方法做推荐

    方案一: div绝对定位水平垂直居中[margin:auto实现绝对定位元素的居中], 兼容性:,IE7及之前版本不支持 div{ width: 200px; height: 200px; backg ...

  2. ASP.NET MVC学习——控制器传递数据到view的简单案例

    从控制传数据到view端的方法: 方法一:修改Control数据,添加ViewBag 1.ViewBag.+ 任意变量名 = "你想要输入的数据" 2.在Control对应的csh ...

  3. 修改vs默认浏览器

    右键你的Html或者网页项目,选择"使用以下工具浏览" 跳出选择框,选择你想要的浏览器作为默认值即可,也可以添加你想要的浏览器.

  4. C - Highways poj1751最小生成树

    The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has a very poor system of p ...

  5. 美化你的终端利器Iterm2

    Iterm2是特别好用的一款终端,支持自定义字体和高亮,让日常开发,充满愉悦. 安装iterm2(mac版) brew tap caskroom/cask brew cask install iter ...

  6. Laravel路由不生效,除了首页全部404解决方案Nginx环境

    原因: 请求根目录/ (http://www.xxx.com/public/),会请求public/index.php 输入其他路由地址时,会把你的请求定位到:http://www.xxx.com/i ...

  7. 高校战“疫”网络安全分享赛 Misc ez_mem&usb

    打开之后是一个流量包 用wireshark导出HTTP文件,有个upload,用一下binwalk,出来了一个镜像文件 用volatility搜一下,命令里有一个密码,看见了但是后来给忘了... 文件 ...

  8. srt字幕翻译

    需要把字幕名改成i.txt 有有道和谷歌 代码: #Author:Chenglong Qian #Copyright :Chenglong Qian import json import reques ...

  9. 页面性能分析-Chrome Dev Tools

    一.分析面板介绍 进行页面性能快速分析的主要是图中圈出来的几个模块功能: Network : 页面中各种资源请求的情况,这里能看到资源的名称.状态.使用的协议(http1/http2/quic...) ...

  10. python os模块判断文件是否存在

    import os os.path.exists(test_file.txt)