Qt 之 XML(DOM)

作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员

DOM(Document Object Model - 文档对象模型)定义了访问和操作 XML 文档的标准方法。

DOM 把 XML 文档作为树结构来查看,能够通过 DOM 树来访问所有元素。可以修改或删除它们的内容,并创建新的元素。元素及其文本、属性都被认为是节点。

详细说明

QDomDocument 类表示一个 XML 文档。

QDomDocument 类表示整个 XML 文档。从概念上讲,它是文档树的根,并提供对文档数据的主要访问。

因为元素、文本节点、注释、处理指令等不能存在于文档的上下文之外,所以文档类还包含创建这些对象所需的工厂函数。创建的节点对象有一个 ownerDocument() 函数,将它们与在其上下文中创建的文档相关联。最常用的 DOM 类是 QDomNode、QDomDocument、QDomElement 和 QDomText。

解析的 XML 在内部由对象树表示,可以使用各种 QDom 类访问,所有的 QDom 类只引用内部树中的对象。一旦最后一个 QDom 对象引用它们或 QDomDocument 本身被删除,DOM 树中的内部对象将被删除。

元素、文本节点等的创建使用此类中提供的各种工厂函数完成。使用 QDom 类的默认构造函数只会导致无法操作或插入到 Document 中的空对象。

QDomDocument 类具有创建文档数据的多个函数,例如:createElement()、createTextNode()、createComment()、createCDATASectio

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要将XML文件读取到QDomDocument对象,可以使用QXmlStreamReader类和QDomDocument类。以下是一个简单的例子: ```cpp #include <QFile> #include <QXmlStreamReader> #include <QDomDocument> QFile file("example.xml"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; QXmlStreamReader xmlReader(&file); QDomDocument domDocument; while (!xmlReader.atEnd()) { xmlReader.readNext(); if (xmlReader.isStartElement()) { QDomElement element = domDocument.createElement(xmlReader.name().toString()); domDocument.appendChild(element); if (xmlReader.attributes().count() > 0) { for (int i = 0; i < xmlReader.attributes().count(); i++) { QDomAttr attr = domDocument.createAttribute(xmlReader.attributes().at(i).name().toString()); attr.setValue(xmlReader.attributes().at(i).value().toString()); element.setAttributeNode(attr); } } } else if (xmlReader.isCharacters()) { QDomText text = domDocument.createTextNode(xmlReader.text().toString()); domDocument.lastChild().appendChild(text); } else if (xmlReader.isEndElement()) { domDocument.removeChild(domDocument.lastChild()); } } if (xmlReader.hasError()) return; file.close(); ``` 在这个例子,我们打开一个XML文件,并且创建一个QXmlStreamReader对象来读取该文件。然后,我们创建一个QDomDocument对象来存储XML文件的内容。我们使用while循环来遍历XML文件的所有元素,属性和文本节点。在循环,我们检查当前节点的类型,并根据需要创建QDomElement,QDomAttr和QDomText对象,并将它们添加到QDomDocument对象。最后,我们检查是否有任何错误,并关闭文件。 注意:这个例子只是一个简单的例子,如果XML文件非常大或者非常复杂,可能需要使用更复杂的算法来读取和解析XML文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一去丶二三里

有收获,再打赏!

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

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

打赏作者

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

抵扣说明:

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

余额充值