QDomImplementation Class

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

Header: #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 1 级和 DOM 2 级核心的 XML 子集。

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

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

有关文档对象模型的更多信息,请参阅第 1 级第 2 级核心。有关 DOM 实现的一般介绍,请参阅QDomDocument 文档。

QDom 类有一些不符合 XML 规范的问题,这些问题无法在不破坏向后兼容性的情况下在 Qt 4 中修复。Qt XML Patterns 模块以及QXmlStreamReaderQXmlStreamWriter 类的一致性较高。

另请参阅 hasFeature().

成员类型文档

enum QDomImplementation::InvalidDataPolicy

该枚举规定了当QDomDocument 中的工厂函数在调用无效数据时应采取的措施。

常量说明
QDomImplementation::AcceptInvalidChars0数据无论如何都应存储在 DOM 对象中。在这种情况下,生成的 XML 文档可能格式不佳。这是默认值,也是 QDom 在 Qt < 4.1 中的行为。
QDomImplementation::DropInvalidChars1无效字符应从数据中删除。
QDomImplementation::ReturnNullNode2工厂函数应返回一个空节点。

另请参阅 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 还允许使用默认的空构造函数创建文档。生成的文档为空,但在调用工厂函数(如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 实现对象是从不同的 QDomDocuments 创建的,则返回true ;否则返回false

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

为该 DOM 实现指定other

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

如果other 和此 DOM 实现对象是从同一个QDomDocument 创建的,则返回true ;否则返回false

© 2025 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.