本页内容

QDomImplementation Class

QDomImplementation 类提供了有关 DOM 实现功能的信息。更多内容...

标题: #include <QDomImplementation>
CMake: find_package(Qt6 REQUIRED COMPONENTS Xml)
target_link_libraries(mytarget PRIVATE Qt6::Xml)
qmake: QT += xml

注意:该类中的所有函数均为可重入的,但以下情况除外:

公共类型

enum InvalidDataPolicy { AcceptInvalidChars, DropInvalidChars, ReturnNullNode }

公共函数

QDomImplementation()
QDomImplementation(const QDomImplementation &implementation)
~QDomImplementation()
QDomDocument createDocument(const QString &nsURI, const QString &qName, const QDomDocumentType &doctype)
QDomDocumentType createDocumentType(const QString &qName, const QString &publicId, const QString &systemId)
bool hasFeature(const QString &feature, const QString &version) const
bool isNull()
bool operator!=(const QDomImplementation &other) const
QDomImplementation &operator=(const QDomImplementation &other)
bool operator==(const QDomImplementation &other) const

静态公共成员

QDomImplementation::InvalidDataPolicy invalidDataPolicy()
void setInvalidDataPolicy(QDomImplementation::InvalidDataPolicy policy)

详细说明

该类描述了 DOM 实现所支持的功能。目前支持 DOM Level 1 的 XML 子集和 DOM Level 2 Core。

通常,您将使用函数QDomDocument::implementation() 来获取实现对象。

您可以使用createDocumentType() 创建新的文档类型,并使用createDocument() 创建新的文档。

有关文档对象模型(DOM)的更多信息,请参阅Level 1和Level 2 Core。如需了解 DOM 实现的更通用的介绍,请参阅QDomDocument 文档。

QDom 类存在一些与 XML 规范不符的问题,若要在 Qt 4 中修复这些问题,将导致向后兼容性失效。Qt XML 的 Patterns 模块以及QXmlStreamReader 和QXmlStreamWriter 类具有更高的规范符合度。

另请参阅 hasFeature()。

成员类型文档

enum QDomImplementation::InvalidDataPolicy

此枚举指定了当使用无效数据调用QDomDocument 中的工厂函数时应采取的操作。

常量值描述
QDomImplementation::AcceptInvalidChars0数据仍应存储在 DOM 对象中。在这种情况下,生成的 XML 文档可能不符合语法规范。这是默认值,也是 Qt 6.12 之前 QDom 的行为。
QDomImplementation::DropInvalidChars1应从数据中移除无效字符。
QDomImplementation::ReturnNullNode2工厂函数应返回一个空节点。自 Qt 6.12 起,此值为默认值。

另请参阅 setInvalidDataPolicy() 和invalidDataPolicy()。

成员函数文档

QDomImplementation::QDomImplementation()

创建一个 QDomImplementation 对象。

QDomImplementation::QDomImplementation(const QDomImplementation &implementation)

创建implementation 的副本。

[noexcept] QDomImplementation::~QDomImplementation()

销毁该对象并释放其资源。

QDomDocument QDomImplementation::createDocument(const QString &nsURI, const QString &qName, const QDomDocumentType &doctype)

创建一个文档类型为doctype 的DOM文档。该函数还会添加一个根元素节点,其限定名称为qName ,命名空间URI为nsURI 。

QDomDocumentType QDomImplementation::createDocumentType(const QString &qName, const QString &publicId, const QString &systemId)

为名称qName 创建一个文档类型节点。

publicId 指定外部子集的公共标识符。如果将空字符串(QString())指定为publicId ,则表示该文档类型没有公共标识符。

systemId 指定外部子集的系统标识符。如果将空字符串指定为systemId ,则表示该文档类型没有系统标识符。

由于无法在没有系统标识符的情况下拥有公共标识符,因此如果没有系统标识符,公共标识符将被设置为空字符串。

DOM 2 级不支持任何其他文档类型声明功能。

使用以这种方式创建的文档类型的唯一方法是,结合 `createDocument()` 函数来创建一个具有该文档类型的 `QDomDocument `。

在 DOM 规范中,这是创建非空文档的唯一方法。出于历史原因,Qt XML 还允许使用默认的空构造函数来创建文档。生成的文档为空,但在调用工厂函数(例如QDomDocument::createElement())时会变为非空。 调用 setContent() 时,文档也会变为非空。

另请参阅 createDocument()。

bool QDomImplementation::hasFeature(const QString &feature, const QString &version) const

如果 QDom 实现了feature 所要求的version ,则该函数返回true ;否则返回false 。

当前支持的功能及其版本:

功能版本
XML1.0

[static] QDomImplementation::InvalidDataPolicy QDomImplementation::invalidDataPolicy()

返回无效数据策略,该策略指定当QDomDocument 中的工厂函数接收无效数据时应采取的操作。

警告:此函数不支持重入。

另请参阅 setInvalidDataPolicy() 和InvalidDataPolicy 。

bool QDomImplementation::isNull()

如果该对象是由QDomDocument::implementation() 创建的,则返回false ;否则返回true 。

[static] void QDomImplementation::setInvalidDataPolicy(QDomImplementation::InvalidDataPolicy policy)

设置无效数据策略,该策略规定当向QDomDocument 中的工厂函数传递无效数据时应采取的处理措施。

该policy 将应用于所有已存在的以及将来将创建的QDomDocument 实例。

void XML_snippet_main()
{
QDomDocument doc;
QDomImplementation impl;
// This will create the element, but the resulting XML document will
// be invalid, because '~' is not a valid character in a tag name.
impl.setInvalidDataPolicy(QDomImplementation::AcceptInvalidChars);
QDomElement elt1 = doc.createElement("foo~bar");

// This will create an element with the tag name "foobar".
impl.setInvalidDataPolicy(QDomImplementation::DropInvalidChars);
QDomElement elt2 = doc.createElement("foo~bar");

// This will create a null element.
impl.setInvalidDataPolicy(QDomImplementation::ReturnNullNode);
QDomElement elt3 = doc.createElement("foo~bar");
}

警告:此函数不具备可重入性。

另请参阅 invalidDataPolicy() 和InvalidDataPolicy 。

bool QDomImplementation::operator!=(const QDomImplementation &other) const

如果 `other ` 和此 DOM 实现对象是从不同的 `QDocument` 创建的,则返回 `true `;否则返回 `false`。

QDomImplementation &QDomImplementation::operator=(const QDomImplementation &other)

将other 分配给此DOM实现。

bool QDomImplementation::operator==(const QDomImplementation &other) const

如果 `other ` 与该 DOM 实现对象均由同一个 `QDomDocument` 创建,则返回 `true `;否则返回 `false`。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.