news 2026/5/1 8:11:32

Qt ----- 各类字符串解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt ----- 各类字符串解析

目录

  • 1,xml字符串解析
    • 1.1 QDomElement 节点解析类
    • 1.2 QDomNode节点遍历类
    • 1.3 QDomNodeList 类
  • 2,创建xml字符串
    • 2.1 QDomDocument类的函数
    • 2.2 QDomElement类的函数

1,xml字符串解析

1.1 QDomElement 节点解析类

QDomElement

概述
QDomElement 继承自 QDomNode,专门用于表示 XML 文档中的元素节点。元素节点是 XML 文档的基本构建块,它们可以包含子元素、文本内容和属性。

常用成员函数

  • tagName():返回元素的标签名,例如在 元素中,返回 “book”。
  • attribute(const QString &name, const QString &defaultValue = QString()):获取指定属性的值。如果属性不存在,返回默认值(默认为空字符串)。例如,对于 ,attribute(“category”) 将返回 “cooking”。
  • setAttribute(const QString &name, const QString &value):设置元素的属性值。
  • elementsByTagName(const QString &tagName):返回所有具有指定标签名的子元素,以QDomNodeList 的形式。例如,在一个包含多个 元素的父元素中,调用
    elementsByTagName(“book”) 会返回所有的 元素。

1.2 QDomNode节点遍历类

QDomNode

概述:
QDomNode 是 DOM 树中所有节点的抽象基类。它代表了 XML 文档中的一个节点,可以是元素节点、文本节点、属性节点、注释节点等各种类型的节点。通过 QDomNode,可以遍历 DOM 树,访问节点的属性和子节点等。

常用成员函数:

  • childNodes():返回该节点的所有子节点,以 QDomNodeList 的形式。
  • firstChild():返回该节点的第一个子节点,如果没有子节点则返回一个空的 QDomNode。
  • lastChild():返回该节点的最后一个子节点,如果没有子节点则返回一个空的 QDomNode。
  • nextSibling():返回该节点的下一个兄弟节点,如果没有下一个兄弟节点则返回一个空的 QDomNode。
  • previousSibling():返回该节点的上一个兄弟节点,如果没有上一个兄弟节点则返回一个空的 QDomNode。
  • isElement():判断该节点是否为元素节点,如果是则返回 true,否则返回 false。
  • toElement():该函数尝试将QDomNode对象转换为QDomElement对象。如果QDomNode实际上代表一个元素节点,toElement()将返回对应的QDomElement对象,以便访问元素特定的属性和方法。如果QDomNode不是元素节点,toElement()将返回一个空的QDomElement对象,其isNull()函数将返回true。

1.3 QDomNodeList 类

QDomNodeList
概述
QDomNodeList 是一个节点列表,它包含了一系列的 QDomNode。这个列表可以是通过 QDomNode 的 childNodes() 或 QDomElement 的 elementsByTagName() 等函数获取的子节点集合。

常用成员函数

  • count():返回列表中节点的数量。
  • at(int index):返回列表中指定索引位置的节点。索引从 0 开始,如果索引超出范围,返回一个空的 QDomNode。
  • operator[](int index):这是 at(int index) 的重载,也用于返回列表中指定索引位置的节点。

2,创建xml字符串

在 Qt 中使用QDomDocument创建 XML 字符串主要涉及以下类和函数:
主要类

  • QDomDocument:代表整个 XML 文档,用于管理文档的结构,包括创建节点、添加节点到文档树以及将文档转换为字符串。
  • QDomElement:表示 XML 文档中的元素节点。通过它可以创建元素、设置元素的属性以及添加子元素。
  • QDomText:用于表示文本节点,即元素内的文本内容。虽然在代码中通常使用
  • QDomDocument::createTextNode函数创建文本节点并添加到元素中,但了解这个类有助于理解 XML 文档结构。
  • QDomProcessingInstruction:用于创建处理指令,例如 XML 声明(<?xml version="1.0" encoding="UTF - 8"?>)就是一个处理指令。

常用函数

2.1 QDomDocument类的函数

  • createProcessingInstruction(const QString &target, const QString& data):创建一个处理指令。target通常为"xml",data包含版本和编码信息等,如"version=“1.0”
    encoding=“UTF - 8"”。
  • createElement(const QString& tagName):创建一个指定标签名的元素节点。例如,createElement(“book”)创建一个元素。
  • createTextNode(const QString& text):创建一个包含指定文本的文本节点。例如,createTextNode(“Some text”)创建一个文本节点。
  • appendChild(const QDomNode& node):将一个节点添加到文档树中,作为当前文档的子节点。可以添加处理指令、根元素等。
  • toString(int indent = 0):将QDomDocument转换为字符串形式的
    XML。indent参数用于指定缩进级别,默认为 0(无缩进)。

2.2 QDomElement类的函数

  • setAttribute(const QString &name, const QString& value):为元素设置属性。例如,element.setAttribute(“category”,
    “fiction”)为element元素设置category属性,值为"fiction"。
  • appendChild(const QDomNode& node):将一个节点添加为当前元素的子节点。可以添加子元素或文本节点等。例如,bookElement.appendChild(titleElement)将titleElement添加为bookElement的子元素。
  • // 创建文本节点
    QDomText textNode = doc.createTextNode(“This is some text within the root element”);
    root.appendChild(textNode);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:57:32

Mac滚动方向自定义神器:Scroll Reverser完整使用手册

Mac滚动方向自定义神器&#xff1a;Scroll Reverser完整使用手册 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是否曾经在使用Mac时感到困惑&#xff1f;触控板的滚动方向很…

作者头像 李华
网站建设 2026/5/1 6:57:40

Steam成就管理神器:完全免费的成就解锁工具使用指南

Steam成就管理神器&#xff1a;完全免费的成就解锁工具使用指南 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 还在为Steam游戏中那些难以达成的成就而烦…

作者头像 李华
网站建设 2026/4/23 4:13:37

Sunshine游戏串流终极指南:5个技巧让串流效果翻倍

想要在任何设备上畅玩PC游戏&#xff1f;Sunshine游戏流媒体服务器配合Moonlight客户端&#xff0c;让你体验前所未有的低延迟游戏串流。无论你是想在平板上玩3A大作&#xff0c;还是在客厅电视上享受游戏乐趣&#xff0c;这套组合都能完美胜任。今天就来分享5个实用技巧&#…

作者头像 李华
网站建设 2026/5/1 7:50:05

PyTorch-CUDA-v2.6镜像部署ResNet50进行ImageNet分类

PyTorch-CUDA-v2.6镜像部署ResNet50进行ImageNet分类 在现代AI系统开发中&#xff0c;一个常见的痛点是&#xff1a;明明算法逻辑已经写好&#xff0c;模型结构也验证无误&#xff0c;结果却卡在“环境跑不起来”上。CUDA版本不匹配、cuDNN缺失、PyTorch编译失败……这些底层问…

作者头像 李华
网站建设 2026/5/1 6:47:31

百度ERNIE 4.5-VL重磅发布:280亿参数多模态大模型登场

百度ERNIE 4.5-VL重磅发布&#xff1a;280亿参数多模态大模型登场 【免费下载链接】ERNIE-4.5-VL-28B-A3B-Base-PT 项目地址: https://ai.gitcode.com/hf_mirrors/baidu/ERNIE-4.5-VL-28B-A3B-Base-PT 百度正式发布新一代多模态大模型ERNIE-4.5-VL-28B-A3B-Base-PT&…

作者头像 李华
网站建设 2026/5/1 8:06:53

zotero-style期刊识别终极指南:一键自动化文献分级管理

还在手动查找期刊影响因子和分区信息吗&#xff1f;zotero-style插件为你带来革命性的文献管理体验&#xff0c;让期刊识别从繁琐变为一键自动化。无论你是科研新手还是资深学者&#xff0c;这款插件都能让你的文献管理工作事半功倍。 【免费下载链接】zotero-style zotero-sty…

作者头像 李华