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( "属性名" );

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员陈子青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值