QDomElement 类

QDomElement 类表示 DOM 树中的一个元素。 更多信息...

头文件 #include <QDomElement>
CMakefind_package(Qt6 REQUIRED COMPONENTS Xml)
target_link_libraries(mytarget PRIVATE Qt6::Xml)
qmakeQT += xml
继承 QDomNode

注意:此类中所有函数都是 可重入的

公共函数

QDomElement()
QDomElement(const QDomElement &x)
QStringattribute(const QString &name, const QString &defValue = QString()) const
QStringattributeNS(const QString &nsURI, const QString &localName, const QString &defValue = QString()) const
QDomAttrattributeNode(const QString &name)
QDomAttrattributeNodeNS(const QString &nsURI, const QString &localName)
QDomNamedNodeMapattributes() const
QDomNodeListelementsByTagName(const QString &tagname) const
QDomNodeListelementsByTagNameNS(const QString &nsURI, const QString &localName) const
boolhasAttribute(const QString &name) const
boolhasAttributeNS(const QString &nsURI, const QString &localName) const
QDomNode::NodeTypenodeType() const
voidremoveAttribute(const QString &name)
voidremoveAttributeNS(const QString &nsURI, const QString &localName)
QDomAttrremoveAttributeNode(const QDomAttr &oldAttr)
voidsetAttribute(const QString &name, const QString &value)
voidsetAttribute(const QString &name, qlonglong value)
voidsetAttribute(const QString &name, qulonglong value)
voidsetAttribute(const QString &name, int value)
voidsetAttribute(const QString &name, uint value)
voidsetAttribute(const QString &name, float value)
voidsetAttribute(const QString &name, double value)
voidsetAttributeNS(const QString &nsURI, const QString &qName, const QString &value)
voidsetAttributeNS(const QString &nsURI, const QString &qName, int value)
voidsetAttributeNS(const QString &nsURI, const QString &qName, uint value)
voidsetAttributeNS(const QString &nsURI, const QString &qName, qlonglong value)
voidsetAttributeNS(const QString &nsURI, const QString &qName, qulonglong value)
voidsetAttributeNS(const QString &nsURI, const QString &qName, double value)
QDomAttrsetAttributeNode(const QDomAttr &newAttr)
QDomAttrsetAttributeNodeNS(const QDomAttr &newAttr)
voidsetTagName(const QString &name)
QStringtagName() const
QStringtext() const
QDomElement &operator=(const QDomElement &x)

详细描述

元素具有一个tagName()和一个与其关联的零个或多个属性。可以通过setTagName()更改标签名。

元素属性由QDomAttr对象表示,可以使用attribute()和attributeNode()函数进行查询。您可以使用setAttribute()和setAttributeNode()函数设置属性。使用removeAttribute()可以删除属性。这些函数有命名空间感知的等价函数,即setAttributeNS()、setAttributeNodeNS()和removeAttributeNS()。

如果您想访问节点的文本,请使用text(),例如:

QDomElement e = //...
//...
QString s = e.text()

text()函数递归操作以找到文本(因为并非所有元素都包含文本)。如果您想找到所有节点及其子节点的所有文本,可以遍历子节点,查找QDomText节点,例如:

QString text;
QDomElement element = doc.documentElement();
for(QDomNode n = element.firstChild(); !n.isNull(); n = n.nextSibling())
{
    QDomText t = n.toText();
    if (!t.isNull())
        text += t.data();
}

请注意,我们尝试将每个节点转换为文本节点并使用text(),而不是使用firstChild()toText().data()或ntoText().data(),因为在节点上直接使用这些可能会因为节点不是文本元素而失败。

您可以使用elementsByTagName()或elementsByTagNameNS()来获取具有指定标签名的一个元素的所有子代列表。

要浏览DOM文档中的元素,请使用firstChildElement()、lastChildElement()、nextSiblingElement()和previousSiblingElement()。例如,要遍历名为"database"的根元素中的所有子元素,名为"entry",可以使用:

QDomDocument doc = // ...
QDomElement root = doc.firstChildElement("database");
QDomElement elt = root.firstChildElement("entry");
for (; !elt.isNull(); elt = elt.nextSiblingElement("entry")) {
    // ...
}

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

成员函数文档

QDomElement::QDomElement()

构建一个空元素。请使用QDomDocument::createElement()函数构建具有内容的元素。

QDomElement::QDomElement(const QDomElement &x)

构造 x 的副本。

副本的数据是共享的(浅拷贝):修改一个节点也将改变另一个节点。如果想要进行深拷贝,请使用 cloneNode

QString QDomElement::attribute(const QString &name, const QString &defValue = QString()) const

返回名为 name 的属性。如果该属性不存在,则返回 defValue

另请参阅setAttributeattributeNodesetAttributeNodeattributeNS

QString QDomElement::attributeNS(const QString &nsURI, const QString &localName, const QString &defValue = QString()) const

返回具有局部名字 localName 和命名空间URI nsURI 的属性。如果该属性不存在,则返回 defValue

另请参阅setAttributeNSattributeNodeNSsetAttributeNodeNSattribute

QDomAttr QDomElement::attributeNode(const QString &name)

返回对应于名为 name 的属性的 QDomAttr 对象。如果不存在这样的属性,则返回一个 空属性

另请参阅setAttributeNodeattributesetAttributeattributeNodeNS

QDomAttr QDomElement::attributeNodeNS(const QString &nsURI, const QString &localName)

返回对应于具有局部名字 localName 和命名空间URI nsURI 的属性的 QDomAttr 对象。如果不存在这样的属性,则返回一个 空属性

另请参阅setAttributeNodeNSsetAttributeNodeattributesetAttribute

QDomNamedNodeMap QDomElement::attributes() const

返回一个包含此元素所有属性的 QDomNamedNodeMap

另请参阅attributesetAttributeattributeNodesetAttributeNode

QDomNodeList QDomElement::elementsByTagName(const QString &tagname) const

返回一个包含在以当前元素为根节点的元素子树前序遍历期间遇到的名称为 tagname 的所有后代的 QDomNodeList。返回列表中元素的顺序是它们在前序遍历中遇到的顺序。

另请参阅 elementsByTagNameNS() 和 QDomDocument::elementsByTagName

QDomNodeList QDomElement::elementsByTagNameNS(const QString &nsURI, const QString &localName) const

返回一个包含所有具有局部名称 localName 且命名空间URI为 nsURI 的后代的 QDomNodeList。这些后代是在以该元素为根的前序遍历元素子树时遇到的。返回列表中元素的顺序是它们在前序遍历过程中遇到的顺序。

另请参阅 elementsByTagName() 和 QDomDocument::elementsByTagNameNS

bool QDomElement::hasAttribute(const QString &name) const

如果此元素有一个名为 name 的属性,则返回 true;否则返回 false

注意:此函数不考虑命名空间的存在。因此,指定的名称将与包括可能存在的任何命名空间前缀的完全限定属性名称进行测试。

使用 hasAttributeNS() 显式检查具有特定命名空间和名称的属性。

bool QDomElement::hasAttributeNS(const QString &nsURI, const QString &localName) const

如果此元素有一个局部名称为 localName 且命名空间URI为 nsURI 的属性,则返回 true;否则返回 false。

QDomNode::NodeType QDomElement::nodeType() const

返回 ElementNode

void QDomElement::removeAttribute(const QString &name)

从该元素中删除名为 name 的属性。

另请参阅 setAttribute()、attribute() 和 removeAttributeNS

void QDomElement::removeAttributeNS(const QString &nsURI, const QString &localName)

从该元素中删除具有局部名称 localName 和命名空间URI nsURI 的属性。

另请参阅 setAttributeNS()、attributeNS() 和 removeAttribute

QDomAttr QDomElement::removeAttributeNode(const QDomAttr &oldAttr)

从元素中删除属性 oldAttr 并返回它。

另请参阅 attributeNode() 和 setAttributeNode

void QDomElement::setAttribute(const QString &name, const QString &value)

添加一个名为 name 且值为 value 的属性。如果存在具有相同名称的属性,则其值将被 value 替换。

另请参阅 attribute(),setAttributeNode() 和 setAttributeNS()。

void QDomElement::setAttribute(const QString &nameqlonglong value)

这是一个重载函数。

格式化始终使用 QLocale::C

void QDomElement::setAttribute(const QString &namequlonglong value)

这是一个重载函数。

格式化始终使用 QLocale::C

void QDomElement::setAttribute(const QString &nameint value)

这是一个重载函数。

格式化始终使用 QLocale::C

void QDomElement::setAttribute(const QString &nameuint value)

这是一个重载函数。

格式化始终使用 QLocale::C

void QDomElement::setAttribute(const QString &namefloat value)

这是一个重载函数。

格式化始终使用 QLocale::C

void QDomElement::setAttribute(const QString &namedouble value)

这是一个重载函数。

格式化始终使用 QLocale::C

void QDomElement::setAttributeNS(const QString &nsURI,const QString &qName,const QString &value)

添加具有限定名称 qName 和命名空间 URI nsURI 的属性,其值为 value。如果存在具有相同本地名称和命名空间 URI 的属性,则其前缀由 qName 的前缀替换,其值由 value 替换。

尽管 qName 是限定名称,但使用本地名称来决定是否替换现有属性的值。

另请参阅 attributeNS(),setAttributeNodeNS() 和 setAttribute()。

void QDomElement::setAttributeNS(const QString &nsURI,const QString &qNameint value)

这是一个重载函数。

void QDomElement::setAttributeNS(const QString &nsURI,const QString &qNameuint value)

这是一个重载函数。

void QDomElement::setAttributeNS(const QString &nsURI,const QString &qNameqlonglong value)

这是一个重载函数。

void QDomElement::setAttributeNS(const QString &nsURI,const QString &qNamequlonglong value)

这是一个重载函数。

void QDomElement::setAttributeNS(const QString &nsURI, const QString &qName, double value)

这是一个重载函数。

QDomAttr QDomElement::setAttributeNode(const QDomAttr &newAttr)

将属性 newAttr 添加到此元素中。

如果该元素已有与 newAttr 名字相同的属性,此函数将替换该属性并返回它;否则,该函数返回一个 空属性

另请参阅 attributeNode()、setAttribute() 和 setAttributeNodeNS()。

QDomAttr QDomElement::setAttributeNodeNS(const QDomAttr &newAttr)

将属性 newAttr 添加到此元素中。

如果该元素已有与 newAttr 相同的本地名字和命名空间 URI 的属性,此函数将替换该属性并返回它;否则,该函数返回一个 空属性

另请参阅 attributeNodeNS()、setAttributeNS() 和 setAttributeNode()。

void QDomElement::setTagName(const QString &name)

将此元素标签名设置为 name

另请参阅 tagName

QString QDomElement::tagName() const

返回此元素的标签名。对于如下 XML 元素

<img src="myimg.png">

标签名将返回 "img"。

另请参阅 setTagName

QString QDomElement::text() const

返回元素文本或一个空字符串。

示例

<h1>Hello <b>Qt</b> <![CDATA[<xml is cool>]]></h1>

对于 QDomElement<h1> 标签,函数 text() 将返回以下文本

Hello Qt <xml is cool>

此函数会忽略注释。它仅评估 QDomTextQDomCDATASection 对象。

QDomElement &QDomElement::operator=(const QDomElement &x)

x 赋值给此 DOM 元素。

副本的数据是共享的(浅拷贝):修改一个节点也将改变另一个节点。如果想要进行深拷贝,请使用 cloneNode

© 2024 Qt 公司有限公司。本文件中包含的文档贡献为各自所有权人的版权。提供的文档受自由软件基金会发布的 GNU 自由文档许可证版本 1.3 条款的许可。Qt 和相关商标为芬兰 Qt 公司及其在全球的子公司的商标。所有其他商标为各自所有者的财产。