QXmlNamespaceSupport Class
QXmlNamespaceSupport 类是一个辅助类,用于支持需要集成命名空间功能的 XML 读取器。更多内容...
| 头文件: | #include <QXmlNamespaceSupport> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
| qmake: | QT += core5compat |
注意:该类中的所有函数均为可重入的。
公共函数
| QXmlNamespaceSupport() | |
| ~QXmlNamespaceSupport() | |
| void | popContext() |
| QString | prefix(const QString &uri) const |
| QStringList | prefixes() const |
| QStringList | prefixes(const QString &uri) const |
| void | processName(const QString &qname, bool isAttribute, QString &nsuri, QString &localname) const |
| void | pushContext() |
| void | reset() |
| void | setPrefix(const QString &pre, const QString &uri) |
| void | splitName(const QString &qname, QString &prefix, QString &localname) const |
| QString | uri(const QString &prefix) const |
详细说明
您可以使用setPrefix()设置当前命名空间的前缀,并使用prefixes()获取当前前缀(或给定URI对应的前缀)的列表。可通过uri()获取命名空间URI。使用pushContext()启动新的命名空间上下文,并使用popContext()返回上一个命名空间上下文。 使用splitName() 或processName() 将名称拆分为前缀和本地名称。
成员函数文档
QXmlNamespaceSupport::QXmlNamespaceSupport()
创建一个 QXmlNamespaceSupport 对象。
[noexcept] QXmlNamespaceSupport::~QXmlNamespaceSupport()
销毁一个QXmlNamespaceSupport 。
void QXmlNamespaceSupport::popContext()
恢复到上一个命名空间上下文。
通常,您应在每个 XML 元素结尾处弹出上下文。弹出上下文后,之前生效的所有命名空间前缀映射将被恢复。
另请参阅 pushContext()。
QString QXmlNamespaceSupport::prefix(const QString &uri) const
返回映射到命名空间 URIuri 的前缀之一。
如果当前有多个前缀映射到同一个 URI,该函数会随机选择其中一个;若需获取所有前缀,请改用prefixes() 函数。
注意:要检查默认前缀,请将 “” 作为参数传递给uri() 函数。
另请参阅 setPrefix()。
QStringList QXmlNamespaceSupport::prefixes() const
返回当前已声明的所有前缀的列表。
如果存在默认前缀,此函数不会将其包含在列表中;请使用uri() 并传入空字符串作为参数来检查默认前缀。
QStringList QXmlNamespaceSupport::prefixes(const QString &uri) const
返回当前为命名空间 URIuri 声明的所有前缀的列表。
该列表中包含“xml:”前缀。若您仅需获取一个映射到该命名空间 URI 的前缀,且不关心具体是哪一个,请改用prefix() 函数。
注意:该列表中绝不会包含空(默认)前缀;若要检查是否存在默认命名空间,请将 "" 作为参数调用uri()。
这是一个重载函数。
void QXmlNamespaceSupport::processName(const QString &qname, bool isAttribute, QString &nsuri, QString &localname) const
在当前上下文中处理一个原始的 XML 1.0 名称,方法是移除其前缀,并在当前已声明的前缀中进行查找。
qname 是要处理的原始 XML 1.0 名称。如果该名称是属性名称,则 `isAttribute ` 为真。
该函数将命名空间 URI 存储在nsuri 中(如果原始名称具有未声明的前缀,则该变量将被设置为空字符串),并将本地名称(不含前缀)存储在localname 中(如果未使用任何命名空间,则该变量将被设置为空字符串)。
请注意,属性名称的处理方式与元素名称不同:未加前缀的元素名称会获得默认命名空间(如有),而未加前缀的属性名称则不会。
void QXmlNamespaceSupport::pushContext()
启动一个新的命名空间上下文。
通常,您应在每个 XML 元素的开头插入一个新上下文:新上下文会自动继承其父上下文的声明,同时还会记录在此上下文中做出的各项声明。
另请参阅 popContext()。
void QXmlNamespaceSupport::reset()
将此命名空间支持对象重置为可再次使用的状态。
void QXmlNamespaceSupport::setPrefix(const QString &pre, const QString &uri)
该函数在当前命名空间上下文中声明前缀pre ,将其定义为命名空间 URIuri 。除非该前缀在后代上下文中被遮蔽,否则它将一直有效,直到该上下文被弹出为止。
请注意,本库中存在一种不对称性。prefix() 不会返回默认的前缀“”,即使您已声明了一个前缀;若要检查默认前缀,必须使用uri() 显式进行查询。这种不对称性的存在是为了便于查询属性名称的前缀,因为在该场景下不允许使用默认前缀。
另请参阅 prefix()。
void QXmlNamespaceSupport::splitName(const QString &qname, QString &prefix, QString &localname) const
将名称qname 在 ':' 处拆分,并将前缀返回至prefix ,将本地名称返回至localname 。
另请参阅 processName()。
QString QXmlNamespaceSupport::uri(const QString &prefix) const
在当前上下文中查找前缀prefix ,并返回当前映射的命名空间 URI。若需使用默认命名空间,请使用空字符串 ("")。
© 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.