38初识xml
XML(可扩展标记语言)是一种用于记录多种数据类型的标记语言。使用XML可以将各类型的文档定义为容易读取的格式,便于用户读取。而且,在应用程序中使用XML,可以轻松实现数据交换。
QT中提供两种访问XML文档的方式:DOM和SAX。
DOM方式:将XML文档转换为树形结果存储到内存中,再进行读取,消耗的内存比较多。此外,由于文档都已经存储到内存,所以需要频繁实现修改等操作时,使用起来比较方便。
SAX方式:相比于DOM,SAX是一种速度更快,更有效的方法,它逐行扫描文档,一边扫描一边解析(由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中,这对于大型文档的解析是一个巨大优势。)而且相比于DOM,SAX可以在解析文档的任意时刻停止解析。但操作复杂,很难修改XML数据。
本例只介绍DOM
QT为DOM提供了用于操作XML的多种C++类,均以QDOM开头:
类 描述
QDomAttr, 表示一个QdomElement的属性
QDomCharacterData, 表示DOM中的一个通用字符串
QDomDocument, 表示XML文档
DomDocumentFragment, QDomNodes树,通常不是一个完整地QDomDocument
QDomDocumentType, 表示文档树中的DTD
QDomElement, 表示DOM树中的一个元素
QDomEntity, 代表一个XML实体
QDomEntityReference, 代表一个XML实体引用
QDomNode、 一个DOM树中所有节点的基类
QDomNodeList、 QdomNode对象列表
QDomNotation, 代表一个XML表示法
QDomProcessingInstruction. 代表XML指令
QDomText、 表示解析的XML文档中的文本数据


重点:在.pro添加QT+=xml
添加一个C++空文件,不需要继承任何基类。如下图:

创建空的XML文件
class DomXML
{
public:
DomXML();
static void CreateXML(QString strFilePath);
};
//创建空的xml文件
void DomXML::CreateXML(QString strFilePath)
{
//打开文件
QFile file(strFilePath);
if(file.exists())
{
qDebug()<<"FilePath exists";
return ;
}
else
{
bool bIsOk=file.open(QIODevice::WriteOnly);
if(bIsOk)
{//打开文件成功
//创建xml文档对象
QDomDocument doc;
//创建xml头部格式<?xml version="1.0" encoding="UTF-8"?>
QDomProcessingInstruction ins;
ins=doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");
//追加元素
doc.appendChild(ins);
//根节点元素
QDomElement root=doc.createElement("日期销售清单");
doc.appendChild(root);
//保存
QTextStream stream(&file);//文本流关联文件
doc.save(stream,4); //4代表缩进4个字符
}
else
{//文件打开失败
qDebug()<<"open file error";
return ;
}
}
}
调用:
DomXML::CreateXML("../demo.xml");
创建成功

38初识xml的更多相关文章
- 初识XML及简单工厂运用--网络电视精灵
网络电视精灵 任务描述 1. 解析XML文件中的数据 三个简单的xml文件; <?xml version="1.0" encoding="utf-8" ? ...
- 初识Xml。
/* * 一.Xml? * * 1.是什么? * Extensible markup Language 可拓展标记性语言 * 功能是 储存数据 * 1.配置文件 * 2.在网络中传输数据 * xml和 ...
- 初识XML
前言 前期敲机房的时候,总是写配置文件,后来到ASP.NET学习中也遇到了XML,可是什么是XML呢,它又是用来干什么的呢?请听我细细道来. 内容 定义 (eXtensible Markup Lang ...
- python学习之路 初识xml
import requests from xml.etree import ElementTree as ET r = requests.get('http://www.webxml.com.cn// ...
- Python 38 初识数据库
数据库 1.什么是mysql,什么是数据库? 文件处理就可以将数据永久存储 问题 1.管理不方便 2.文件操作效率问题 3.一个程序不太可能仅运行在同一台电脑上 提高计算机性能的方式 1.垂直扩展 ...
- staxon实现json和xml互转
pom.xml: <dependency> <groupId>de.odysseus.staxon</groupId> <artifactId>stax ...
- json、javaBean、xml互转的几种工具介绍
json.javaBean.xml互转的几种工具介绍 转载至:http://blog.csdn.net/sdyy321/article/details/7024236 工作中经常要用到Json.Jav ...
- 4、C#进阶:MD5加密、进程、线程、GDI+、XML、委托
MD5加密 将字符串进行加密,无法解密.网上的解密方式也都是在库里找,找不到也没有. 1 protected void Page_Load(object sender, EventArgs e) 2 ...
- json、javaBean、xml互转的几种工具介绍 (转载)
工作中经常要用到Json.JavaBean.Xml之间的相互转换,用到了很多种方式,这里做下总结,以供参考. 现在主流的转换工具有json-lib.jackson.fastjson等,我为大家一一做简 ...
随机推荐
- python2.0_s12_day9_协程&多线程和cpu,磁盘io之间的关系
事件驱动和异步io有什么直接关系. 当我们访问一个网页,不考虑网络问题.我们人类不觉得网页慢. 但是实际中对计算机来说还是慢.那慢在哪里.io io操作是整个网络操作中最慢的.比如你打开网页要是有2秒 ...
- string permutation with upcase and lowcase
Give a string, which only contains a-z. List all the permutation of upcase and lowcase. For example, ...
- Linux rdate 命令
rdate命令可以用来查看远程服务器的时间,也可以同步远程服务器的时间到本机 [root@localhost ~]$ yum install -y rdate [root@localhost ~]$ ...
- Linux tty 命令
终端:终端(Terminal)也称终端设备,是计算机网络中处于网络最外围的设备(如键盘 .打印机 .显示器等),主要用于用户信息的输入以及处理结果的输出 TTY:TTY 是 Teletype(电传打字 ...
- cocos2dx游戏--欢欢英雄传说--添加游戏背景
经过一段时间的学习cocos2dx,接下来我想要实践开发一个小游戏,我把它命名为“欢欢英雄传说”,项目名将取为HuanHero.环境:cocos2dx环境:cocos2d-x 3.11.1IDE:Co ...
- PHP的函数-----生成随机数、日期时间函数
常用的函数 [1] 生成随机数 rand(); 例子: echo rand(); 显示结果: 当刷新时,会有不同的数,默认生成随机数.生成随机数不能控制范围. 如果,想要控制在范围之内,就用: e ...
- poj_3580 伸展树
自己伸展树做的第一个题 poj 3580 supermemo. 题目大意 对一个数组进行维护,包含如下几个操作: ADD x, y, d 在 A[x]--A[y] 中的每个数都增加d REVERSE ...
- 【thinkphp5】 分页样式修改
1 找到文件:/thinkphp/library/think/paginator/driver/Bootstrap.php <?php // +------------------------- ...
- shell 强大的awk
from here 小用法,使用awk来对文件随机抽取n行 awk 'BEGIN{srand()} {print rand()"\t"$0}' input_file | sort ...
- linux主机下的Vmware Workstation配置NAT设置 端口映射-Ubuntu为例
最近折腾虚拟机,由于是在linux下进行的,而相关资料比较少,所以遇到了一些问题. 一个就是配置vmware workstation的NAT设置.因为一般来说,NAT可以共享主机的ip,从而能以主机身 ...