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等,我为大家一一做简 ...
随机推荐
- swift学习笔记之---数组、字典、枚举、结构体
1.数组-Array let types = ["none","warning","error"] //省略类型的数组声明 let menb ...
- Linux rdate 命令
rdate命令可以用来查看远程服务器的时间,也可以同步远程服务器的时间到本机 [root@localhost ~]$ yum install -y rdate [root@localhost ~]$ ...
- Win7下使用Putty代替超级终端通过COM串口连接开发板方法
1.如果电脑(笔记本)没有串口接口,则需要使用一个 USB-Serial 转换线,这里使用 prolific usb-serial USB--串口转换线,首先需要在win7上安装对应的 USB--串口 ...
- 《转》python学习(4)对象
转自http://www.cnblogs.com/BeginMan/p/3160044.html 一.学习目录 1.pyhton对象 2.python类型 3.类型操作符与内建函数 4.类型工厂函数 ...
- 17,UC(06)
/* 达内学习 UC day06 2013-10-10 */ 回忆过去: 系统调用 - UNIX操作系统提供的一些列函数皆苦,用于访问内核空间,遵循posix规范 文件操作:open()\rea ...
- sencha touch 入门系列 (三)sencha touch 项目创建
通过上一章节的学习,我们的开发环境已经配置好了,接下来我们开始创建第一个sencha touch的项目,网络上很多sencha touch的教程都是手动搭建项目的, 不过手动搭建的项目缺少一些senc ...
- nodejs 事件EventEmitter
index.js: // 引入 events 模块 var events = require('events'); //处理函数要写在调用前 var eventHandler = function() ...
- FlashDevelop导入swc库
项目不是AS项目,而是基于FlashIDE. 一 将SWC放入项目lib文件夹下 二 选择lib文件夹,右键,选择添加到库 三 FlashIDE中选择 文件-ActionScript设置 四 选择浏 ...
- 08.Curator缓存
可以利用ZooKeeper在集群的各个节点之间缓存数据.每个节点都可以得到最新的缓存的数据.Curator提供了三种类型的缓存方式:Path Cache,Node Cache 和Tree Ca ...
- Linux创建Python虚拟环境
Linux创建Python虚拟环境 安装 pip install virtualenv 基本使用 为一个工程创建一个虚拟环境: $ cd my_project $ virtualenv venv #v ...