QT/qt(17)xml文件
XML(可扩展标记语言,eXtensible Markup Language)
是一种用于存储和传输数据的标记语言。
它被设计用来结构化、存储和传输信息,具有自我描述性,
易于阅读和理解。XML 文件通常用于数据交换、配置文件、文档格式等领域。
XML 文件由一系列的元素(elements)组成,
每个元素由开始标签(start tag)、内容(content)和结束标签(end tag)组成。
元素可以包含属性(attributes)和其他子元素。
<person>
<name>John Doe</name>
<age>30</age>
<city>New York</city>
<address>
<street>123 Main St</street>
<state>NY</state>
<city>New York</city>
</address>
</person>
在这个示例中:
<person> 是根元素。
<name>, <age>, <city>, 和 <address> 是子元素。
<address> 元素包含 <street>, <state>, 和 <city> 子元素。
XML 文件的特点包括:
可扩展性:XML 允许用户定义自己的标签和结构,因此非常灵活。
自我描述性:XML 文件包含了数据的结构和含义,易于人类阅读和理解。
平台无关性:XML 文件可以在不同的操作系统和应用程序之间交换数据。
层次结构:XML 数据以树形结构组织,便于数据的存储和检索。
XML 文件通常用于以下场景:
数据交换:不同系统之间交换数据,如 Web 服务、API 等。
配置文件:应用程序的配置信息,如服务器配置、应用程序设置等。
文档格式:用于定义文档的结构和内容,如 SVG(可缩放矢量图形)、RSS(简易信息聚合)等。
QDomDocument 类
这些成员函数涵盖了 QDomDocument 类的基本功能,包括创建节点、解析 XML、操作文档结构、查询和遍历节点等。
// 构造函数
QDomDocument::QDomDocument(); // 构造一个空的 QDomDocument 对象
QDomDocument::QDomDocument(const QDomDocumentType &doctype); // 构造一个 QDomDocument 对象,并指定文档类型
QDomDocument::QDomDocument(const QDomDocument &x); // 通过复制另一个 QDomDocument 对象 x 来构造一个 QDomDocument 对象
// 创建节点
QDomElement QDomDocument::createElement(const QString &tagName); // 创建一个元素节点
QDomComment QDomDocument::createComment(const QString &data); // 创建一个注释节点
QDomText QDomDocument::createTextNode(const QString &data); // 创建一个文本节点
QDomCDATASection QDomDocument::createCDATASection(const QString &data); // 创建一个 CDATA 节点
QDomProcessingInstruction QDomDocument::createProcessingInstruction(const QString &target, const QString &data); // 创建一个处理指令节点
QDomDocumentFragment QDomDocument::createDocumentFragment(); // 创建一个文档片段节点
QDomAttribute QDomDocument::createAttribute(const QString &name); // 创建一个属性节点
QDomEntityReference QDomDocument::createEntityReference(const QString &name); // 创建一个实体引用节点
// 解析 XML
bool QDomDocument::setContent(const QByteArray &data, bool namespaceProcessing, QString *errorMsg = nullptr, int *errorLine = nullptr, int *errorColumn = nullptr); // 从字节数组中解析 XML 内容
bool QDomDocument::setContent(const QString &data, bool namespaceProcessing, QString *errorMsg = nullptr, int *errorLine = nullptr, int *errorColumn = nullptr); // 从字符串中解析 XML 内容
bool QDomDocument::setContent(QIODevice *dev, bool namespaceProcessing, QString *errorMsg = nullptr, int *errorLine = nullptr, int *errorColumn = nullptr); // 从 QIODevice 中解析 XML 内容
bool QDomDocument::setContent(const QByteArray &data, QString *errorMsg = nullptr, int *errorLine = nullptr, int *errorColumn = nullptr); // 从字节数组中解析 XML 内容,不进行命名空间处理
bool QDomDocument::setContent(const QString &data, QString *errorMsg = nullptr, int *errorLine = nullptr, int *errorColumn = nullptr); // 从字符串中解析 XML 内容,不进行命名空间处理
bool QDomDocument::setContent(QIODevice *dev, QString *errorMsg = nullptr, int *errorLine = nullptr, int *errorColumn = nullptr); // 从 QIODevice 中解析 XML 内容,不进行命名空间处理
// 获取文档内容
QString QDomDocument::toString(int i