IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Qt中使用QDomDocument操作XML文件 -> 正文阅读

[C++知识库]Qt中使用QDomDocument操作XML文件

目录

头文件

关联文件

XML文件的写入

(1)创建xml文档格式头

(2)创建根节点元素标签

(3)创建子节点元素标签

(4)设置标签属性

(5)设置标签内容

(6)保存xml文件

XML文件的解析?

(1)查找具体标记名的所有节点元素

(2) QDomNodeList类介绍

(3)QDomNode类方法

(4)遍历节点

(5)?QDomElement 与?QDomNode

(6)获取QDomNode属性值的两种方法


头文件


qmake: QT += xml

Header: #include<QDomDocument>

QDomDocument --> xml文件指针

关联文件

QFile file(filePath);

file.open(QIODevice::WriteOnly);

QDomDocument doc;

doc.setContent(&file);

XML文件的写入

(1)创建xml文档格式头

QDomProcessingInstruction ins;
ins = doc.createProcessingInstruction("xml", "version = \'1.0\' encoding=\'utf-8\'");

(2)创建根节点元素标签


??QDomElement root = doc.createElement("tagname");
? doc.appendChild(root);

(3)创建子节点元素标签

QDomElement dateEmt = doc.createElement("childTagName");

root.appendChild(dateEmt);

(4)设置标签属性

QDomElement dateEmt = doc.createElement("cim:Company");

//创建属性名?
QDomAttr dateAttr = doc.createAttribute("属性名");
dateAttr.setNodeValue("属性内容”);

dateEmt.setAttributeNode(dateAttr); //设置标签属性

(5)设置标签内容

QDomText text = doc.createTextNode("xxx");
dateEmt.appendChild(text);

(6)保存xml文件

QTextStream stream(&file);
doc.save(stream, 4); //参数2为 标签的tab缩进值

XML文件的解析?

(1)查找具体标记名的所有节点元素

QDomNodeList nodeList = doc.elementsByTagName("标签名")

(2) QDomNodeList类介绍

QDomNodeList Class

QDomNodeList类是QDomNode对象的列表。

Header:

#include <QDomNodeList>

qmake:

QT += xml

  • 所有成员的列表,包括继承的成员

Note:?All functions in this class are reentrant.

Public Functions

QDomNodeList()

QDomNodeList(const QDomNodeList &n)

~QDomNodeList()

QDomNode

at(int index) const

int

count() const

bool

isEmpty() const

QDomNode

item(int index) const

int

length() const

int

size() const

bool

operator!=(const QDomNodeList &n) const

QDomNodeList &

operator=(const QDomNodeList &n)

bool

operator==(const QDomNodeList &n) const

详细描述

QDomNodeList类是QDomNode对象的列表。

列表可以通过QDomDocument::elementsByTagName()和QDomNode::childNodes()获得。文档对象模型(DOM)要求这些列表是“活动的”:每当您更改基础文档时,列表的内容都会得到更新。

可以使用item()从列表中获取特定节点。列表中的项数由length()返回

(3)QDomNode类方法

QDomNode()

QDomNode(const QDomNode &n)

~QDomNode()

QDomNode

appendChild(const QDomNode &newChild)

QDomNamedNodeMap

attributes() const

QDomNodeList

childNodes() const

void

clear()

QDomNode

cloneNode(bool deep = true) const

int

columnNumber() const

QDomNode

firstChild() const

QDomElement

firstChildElement(const QString &tagName = QString()) const

bool

hasAttributes() const

bool

hasChildNodes() const

QDomNode

insertAfter(const QDomNode &newChild, const QDomNode &refChild)

QDomNode

insertBefore(const QDomNode &newChild, const QDomNode &refChild)

bool

isAttr() const

bool

isCDATASection() const

bool

isCharacterData() const

bool

isComment() const

bool

isDocument() const

bool

isDocumentFragment() const

bool

isDocumentType() const

bool

isElement() const

bool

isEntity() const

bool

isEntityReference() const

bool

isNotation() const

bool

isNull() const

bool

isProcessingInstruction() const

bool

isSupported(const QString &feature, const QString &version) const

bool

isText() const

QDomNode

lastChild() const

QDomElement

lastChildElement(const QString &tagName = QString()) const

int

lineNumber() const

QString

localName() const

QDomNode

namedItem(const QString &name) const

QString

namespaceURI() const

QDomNode

nextSibling() const

QDomElement

nextSiblingElement(const QString &tagName = QString()) const

QString

nodeName() const

NodeType

nodeType() const

QString

nodeValue() const

void

normalize()

QDomDocument

ownerDocument() const

QDomNode

parentNode() const

QString

prefix() const

QDomNode

previousSibling() const

QDomElement

previousSiblingElement(const QString &tagName = QString()) const

QDomNode

removeChild(const QDomNode &oldChild)

QDomNode

replaceChild(const QDomNode &newChild, const QDomNode &oldChild)

void

save(QTextStream &stream, int indent, EncodingPolicy encodingPolicy = QDomNode::EncodingFromDocument) const

void

setNodeValue(const QString &v)

void

setPrefix(const QString &pre)

QDomAttr

toAttr() const

QDomCDATASection

toCDATASection() const

QDomCharacterData

toCharacterData() const

QDomComment

toComment() const

QDomDocument

toDocument() const

QDomDocumentFragment

toDocumentFragment() const

QDomDocumentType

toDocumentType() const

QDomElement

toElement() const

QDomEntity

toEntity() const

QDomEntityReference

toEntityReference() const

QDomNotation

toNotation() const

QDomProcessingInstruction

toProcessingInstruction() const

QDomText

toText() const

bool

operator!=(const QDomNode &n) const

QDomNode &

operator=(const QDomNode &n)

bool

operator==(const QDomNode &n) const

(4)遍历节点

使用firstChild()获取节点的第一个子节点(如果有),并使用nextSibling()进行遍历。

(5)?QDomElement 与?QDomNode

我的理解 : QDomElement和QDomNode都是节点,不同在于QDomElement是单独的节点(即当没有子标签时),可以使用 tagName()和text()方法获得节点的名称和内容。?QDomNode 可以使用 toElement()转化为QDomElement类型

(6)获取QDomNode属性值的两种方法

QDomNode node;

① QString value =?node.attributes().namedItem("属性名").nodeValue()

②?QString value = QDomElement elem = node.toElement().attribute( "属性名" );

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 17:54:42  更:2022-06-25 17:54:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:23:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码