QDomNode Class

QDomNode 类是 DOM 树中所有节点的基类。更多

头文件: #include <QDomNode>
CMake: find_package(Qt6 REQUIRED COMPONENTS Xml)
target_link_libraries(mytarget PRIVATE Qt6::Xml)
qmake: QT += xml
继承于
10 种

QDomAttr,QDomCharacterData,QDomDocument,QDomDocumentFragment,QDomDocumentType,QDomElement,QDomEntity,QDomEntityReference,QDomNotation, 和QDomProcessingInstruction

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

公共类型

enum EncodingPolicy { EncodingFromDocument, EncodingFromTextStream }
enum NodeType { ElementNode, AttributeNode, TextNode, CDATASectionNode, EntityReferenceNode, …, CharacterDataNode }

公共函数

QDomNode()
QDomNode(const QDomNode &node)
~QDomNode()
QDomNode appendChild(const QDomNode &newChild)
QDomNamedNodeMap attributes() const
QDomNodeList childNodes() const
void clear()
QDomNode cloneNode(bool deep = true) const
int columnNumber() const
QDomNode firstChild() const
QDomElement firstChildElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const
bool hasAttributes() const
bool hasChildNodes() const
QDomNode insertAfter(const QDomNode &newChild, const QDomNode &refChild)
QDomNode insertBefore(const QDomNode &newChild, const QDomNode &refChild)
bool isAttr() const
bool isCDATASection() const
bool isCharacterData() const
bool isComment() const
bool isDocument() const
bool isDocumentFragment() const
bool isDocumentType() const
bool isElement() const
bool isEntity() const
bool isEntityReference() const
bool isNotation() const
bool isNull() const
bool isProcessingInstruction() const
bool isSupported(const QString &feature, const QString &version) const
bool isText() const
QDomNode lastChild() const
QDomElement lastChildElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const
int lineNumber() const
QString localName() const
QDomNode namedItem(const QString &name) const
QString namespaceURI() const
QDomNode nextSibling() const
QDomElement nextSiblingElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const
QString nodeName() const
QDomNode::NodeType nodeType() const
QString nodeValue() const
void normalize()
QDomDocument ownerDocument() const
QDomNode parentNode() const
QString prefix() const
QDomNode previousSibling() const
QDomElement previousSiblingElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const
QDomNode removeChild(const QDomNode &oldChild)
QDomNode replaceChild(const QDomNode &newChild, const QDomNode &oldChild)
void save(QTextStream &stream, int indent, QDomNode::EncodingPolicy encodingPolicy = QDomNode::EncodingFromDocument) const
void setNodeValue(const QString &value)
void setPrefix(const QString &pre)
QDomAttr toAttr() const
QDomCDATASection toCDATASection() const
QDomCharacterData toCharacterData() const
QDomComment toComment() const
QDomDocument toDocument() const
QDomDocumentFragment toDocumentFragment() const
QDomDocumentType toDocumentType() const
QDomElement toElement() const
QDomEntity toEntity() const
QDomEntityReference toEntityReference() const
QDomNotation toNotation() const
QDomProcessingInstruction toProcessingInstruction() const
QDomText toText() const
bool operator!=(const QDomNode &other) const
QDomNode &operator=(const QDomNode &other)
bool operator==(const QDomNode &other) const
QTextStream &operator<<(QTextStream &str, const QDomNode &node)

详细说明

DOM 中的许多函数都返回 QDomNode。

您可以使用isAttr(),isCDATASection(),isDocumentFragment(),isDocument(),isDocumentType(),isElement(),isEntityReference(),isText(),isEntity(),isNotation(),isProcessingInstruction(),isCharacterData() 和isComment() 查找节点的类型。

可以使用toAttr(),toCDATASection(),toDocumentFragment(),toDocument(),toDocumentType(),toElement(),toEntityReference(),toText(),toEntity(),toNotation(),toProcessingInstruction(),toCharacterData() 或toComment() 将 QDomNode 转换为其子类之一。您可以使用clear() 将节点转换为空节点。

QDomNode 类的副本通过显式共享来共享数据。这意味着修改一个节点将改变所有副本。这在与返回 QDomNode 的函数(如firstChild() )结合使用时尤其有用。您可以使用cloneNode() 制作节点的独立(深度)副本。

QDomNode 可以为空,就像nullptr 一样。创建空节点的副本会产生另一个空节点。修改空节点是不可能的,但可以将另一个可能是非空的节点分配给它。在这种情况下,空节点的副本将保持为空。您可以通过调用isNull() 来检查 QDomNode 是否为空。QDomNode(或任何派生类)的空构造函数会创建一个空节点。

节点是通过insertBefore(),insertAfter() 或appendChild() 插入的。使用replaceChild() 可以用一个节点替换另一个节点,使用removeChild() 可以删除一个节点。

要遍历节点,可使用firstChild() 获取节点的第一个子节点(如果有的话),然后使用nextSibling() 进行遍历。QDomNode 还提供lastChild(),previousSibling() 和parentNode().要查找具有特定节点名称的第一个子节点,请使用namedItem() 。

要查找一个节点是否有子节点,请使用hasChildNodes() ;要获取一个节点的所有子节点列表,请使用childNodes() 。

nodeName() 和nodeValue() 将分别返回节点的名称和值(其含义取决于节点的类型)。节点的类型由nodeType() 返回。节点的值可通过setNodeValue() 设置。

节点所属的文档由ownerDocument() 返回。

相邻的QDomText 节点可通过normalize() 合并为一个节点。

QDomElement 节点的属性可通过 () 进行检索。attributes

QDomElement 和 节点可以有命名空间,可以用 () 检索。它们的本地名称可通过 () 检索,前缀可通过 () 检索。前缀可通过 () 设置。QDomAttr namespaceURI localName prefix setPrefix

可以使用save() 将节点的 XML 表示写入文本流。

下面的示例查找 XML 文档中的第一个元素,并打印其直接子元素的名称。

QDomDocument d;
QString someXML;

d.setContent(someXML);
QDomNode n = d.firstChild();
while (!n.isNull()) {
    if (n.isElement()) {
        QDomElement e = n.toElement();
        cout << "Element name: " << qPrintable(e.tagName()) << '\n';
        break;
    }
    n = n.nextSibling();
}

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

成员类型文档

enum QDomNode::EncodingPolicy

该枚举指定QDomNode::save() 在序列化时如何决定使用何种编码。

常量说明
QDomNode::EncodingFromDocument1从文档中获取编码。
QDomNode::EncodingFromTextStream2QTextStream 获取编码。

另请参阅 QDomNode::save() 。

enum QDomNode::NodeType

该枚举定义了节点的类型:

常量说明
QDomNode::ElementNode1
QDomNode::AttributeNode2
QDomNode::TextNode3
QDomNode::CDATASectionNode4
QDomNode::EntityReferenceNode5
QDomNode::EntityNode6
QDomNode::ProcessingInstructionNode7
QDomNode::CommentNode8
QDomNode::DocumentNode9
QDomNode::DocumentTypeNode10
QDomNode::DocumentFragmentNode11
QDomNode::NotationNode12
QDomNode::BaseNode21QDomNode 对象,即不是QDomNode 子类。
QDomNode::CharacterDataNode22

成员函数文档

QDomNode::QDomNode()

构建一个null 节点。

QDomNode::QDomNode(const QDomNode &node)

构造node 的副本。

副本的数据是共享的(浅层副本):修改一个节点也会改变另一个节点。如果要进行深度复制,请使用cloneNode() 。

[noexcept] QDomNode::~QDomNode()

销毁对象并释放其资源。

QDomNode QDomNode::appendChild(const QDomNode &newChild)

newChild 追加为节点的最后一个子节点。

如果newChild 是另一个节点的子节点,它将被重新代理到此节点。如果newChild 是此节点的子节点,那么它在子节点列表中的位置将被更改。

如果newChildQDomDocumentFragment ,那么片段的子节点将从片段中移除并附加。

如果newChildQDomElement ,而此节点是QDomDocument ,且已有一个元素节点作为子节点,则newChild 不会被添加为子节点,并返回一个空节点。

成功时返回newChild 的新引用,失败时返回null node

在空节点上调用此函数(例如,使用默认构造函数创建的节点)不会产生任何效果,而是返回一个null node

DOM 规范不允许插入属性节点,但由于历史原因,QDom 还是接受了它们。

另请参见 insertBefore(),insertAfter(),replaceChild() 和removeChild().

QDomNamedNodeMap QDomNode::attributes() const

返回包含所有属性的命名节点图。属性只提供给QDomElements。

更改映射中的属性也会更改该QDomNode 的属性。

QDomNodeList QDomNode::childNodes() const

返回所有直接子节点的列表。

通常情况下,您会在QDomElement 对象上调用此函数。

例如,如果 XML 文档如下所示:

<body>
<h1>Heading</h1>
<p>Hello <b>you</b></p>
</body>

那么 "body "元素的子节点列表将包含由&lt;h1&gt;标记创建的节点和由&lt;p&gt;标记创建的节点。

列表中的节点不会被复制,因此更改列表中的节点也会更改该节点的子节点。

另请参阅 firstChild() 和lastChild()。

void QDomNode::clear()

将节点转换为空节点;如果之前不是空节点,则删除其类型和内容。

另请参见 isNull().

QDomNode QDomNode::cloneNode(bool deep = true) const

创建QDomNode 的深度(而非浅层)副本。

如果deep 为 true,那么克隆将递归进行,这意味着节点的所有子节点也将被深度复制。如果deep 为 false,则只复制节点本身,副本中没有子节点。

int QDomNode::columnNumber() const

对于通过QDomDocument::setContent() 创建的节点,该函数返回该节点在 XML 文档中被解析的列编号。否则将返回-1。

另请参阅 lineNumber() 和QDomDocument::setContent()。

QDomNode QDomNode::firstChild() const

返回节点的第一个子节点。如果没有子节点,则返回null node 。更改返回的节点也会更改文档树中的节点。

另请参阅 lastChild() 和childNodes()。

QDomElement QDomNode::firstChildElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const

返回标记名tagName 和命名空间 URInamespaceURI 的第一个子元素。如果tagName 为空,则返回namespaceURI 的第一个子元素;如果namespaceURI 为空,则返回tagName 的第一个子元素。如果两个参数都为空,则返回第一个子元素。如果没有子元素,则返回空元素。

另请参见 lastChildElement()、previousSiblingElement() 和nextSiblingElement()。

bool QDomNode::hasAttributes() const

如果节点有属性,则返回true ;否则返回false

另请参阅 attributes() 。

bool QDomNode::hasChildNodes() const

如果节点有一个或多个子节点,则返回true ;否则返回false

QDomNode QDomNode::insertAfter(const QDomNode &newChild, const QDomNode &refChild)

将节点newChild 插入子节点refChild 之后。refChild 必须是此节点的直接子节点。如果refChildnull ,那么newChild 将被追加为该节点的最后一个子节点。

如果newChild 是另一个节点的子节点,那么它将被重新代理到此节点。如果newChild 是此节点的子节点,那么它在子节点列表中的位置就会改变。

如果newChildQDomDocumentFragment ,则该片段的子节点将从片段中移除,并插入refChild 之后。

成功时返回newChild 的新引用,失败时返回null node

DOM 规范不允许插入属性节点,但由于历史原因,QDom 仍然接受它们。

另请参阅 insertBefore(),replaceChild(),removeChild() 和appendChild().

QDomNode QDomNode::insertBefore(const QDomNode &newChild, const QDomNode &refChild)

将节点newChild 插入子节点refChild 之前。refChild 必须是该节点的直接子节点。如果refChildnull ,则newChild 将作为该节点的第一个子节点插入。

如果newChild 是另一个节点的子节点,则它将被重新代理到此节点。如果newChild 是此节点的子节点,那么它在子节点列表中的位置将被更改。

如果newChildQDomDocumentFragment ,则会从片段中移除该片段的子节点,并将其插入refChild 之前。

成功时返回newChild 的新引用,失败时返回null node

DOM 规范不允许插入属性节点,但由于历史原因,QDom 仍然接受它们。

另请参见 insertAfter(),replaceChild(),removeChild() 和appendChild().

bool QDomNode::isAttr() const

如果节点是一个属性,则返回true ;否则返回false

如果此函数返回true ,并不意味着此对象是 QDomAttribute;您可以使用 toAttribute() 获取 QDomAttribute。

另请参阅 toAttr() 。

bool QDomNode::isCDATASection() const

如果节点是 CDATA 部分,则返回true ;否则返回 false。

如果此函数返回true ,并不意味着此对象是QDomCDATASection ;您可以通过toCDATASection() 获得QDomCDATASection

另请参见 toCDATASection()。

bool QDomNode::isCharacterData() const

如果节点是字符数据节点,则返回true ;否则返回false

如果此函数返回true ,并不意味着此对象是QDomCharacterData ;您可以通过toCharacterData() 获得QDomCharacterData

另请参见 toCharacterData()。

bool QDomNode::isComment() const

如果节点是注释,则返回true ;否则返回false

如果此函数返回true ,并不意味着此对象是QDomComment ;您可以通过toComment() 获得QDomComment

另请参见 toComment()。

bool QDomNode::isDocument() const

如果节点是文档,则返回true ;否则返回false

如果此函数返回true ,并不意味着此对象是QDomDocument ;您可以通过toDocument() 获得QDomDocument

另请参见 toDocument()。

bool QDomNode::isDocumentFragment() const

如果节点是文档片段,则返回true ;否则返回 false。

如果此函数返回true ,并不意味着此对象是QDomDocumentFragment ;您可以使用toDocumentFragment() 获得QDomDocumentFragment

另请参见 toDocumentFragment()。

bool QDomNode::isDocumentType() const

如果节点是文档类型,则返回true ;否则返回 false。

如果此函数返回true ,并不意味着此对象是QDomDocumentType ;您可以通过toDocumentType() 获得QDomDocumentType

另请参见 toDocumentType()。

bool QDomNode::isElement() const

如果节点是元素,则返回true ;否则返回false

如果此函数返回true ,并不意味着此对象是QDomElement ;您可以通过toElement() 获得QDomElement

另请参见 toElement()。

bool QDomNode::isEntity() const

如果节点是实体,则返回true ;否则返回false

如果此函数返回true ,并不意味着此对象是QDomEntity ;您可以通过toEntity() 获得QDomEntity

另请参见 toEntity()。

bool QDomNode::isEntityReference() const

如果节点是实体引用,则返回true ;否则返回 false。

如果此函数返回true ,并不意味着此对象是QDomEntityReference ;您可以通过toEntityReference() 获得QDomEntityReference

另请参见 toEntityReference()。

bool QDomNode::isNotation() const

如果节点是一个符号,则返回true ;否则返回false

如果此函数返回true ,并不意味着此对象是QDomNotation ;您可以通过toNotation() 获得QDomNotation

另请参见 toNotation()。

bool QDomNode::isNull() const

如果该节点为空(即没有类型或内容),则返回true ;否则返回false

bool QDomNode::isProcessingInstruction() const

如果节点是处理指令,则返回true ;否则返回false

如果此函数返回true ,并不意味着此对象是QDomProcessingInstruction ;您可以使用toProcessingInstruction() 获取 QProcessingInstruction。

另请参阅 toProcessingInstruction() 。

bool QDomNode::isSupported(const QString &feature, const QString &version) const

如果 DOM 实现实现了feature 功能,且此节点在版本version 中支持此功能,则返回true ;否则返回false

另请参见 QDomImplementation::hasFeature()。

bool QDomNode::isText() const

如果节点是文本节点,则返回true ;否则返回false

如果此函数返回true ,并不意味着此对象是QDomText ;您可以通过toText() 获得QDomText

另请参见 toText()。

QDomNode QDomNode::lastChild() const

返回节点的最后一个子节点。如果没有子节点,则返回null node 。更改返回的节点也会更改文档树中的节点。

另请参阅 firstChild() 和childNodes()。

QDomElement QDomNode::lastChildElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const

返回最后一个子元素,其标签名称为tagName ,命名空间 URI 为namespaceURI 。如果tagName 为空,则返回namespaceURI 的最后一个子元素;如果namespaceURI 为空,则返回tagName 的最后一个子元素。如果两个参数都为空,则返回最后一个子元素。如果没有子元素,则返回空元素。

另请参见 firstChildElement()、previousSiblingElement() 和nextSiblingElement()。

int QDomNode::lineNumber() const

对于通过QDomDocument::setContent() 创建的节点,该函数返回该节点在 XML 文档中被解析的行号。否则将返回-1。

另请参阅 columnNumber() 和QDomDocument::setContent()。

QString QDomNode::localName() const

如果节点使用了命名空间,该函数将返回节点的本地名称;否则将返回空字符串。

只有ElementNodeAttributeNode 类型的节点才能使用命名空间。命名空间必须在创建时指定,不可能在创建后添加命名空间。

另请参阅 prefix()、namespaceURI()、QDomDocument::createElementNS() 和QDomDocument::createAttributeNS()。

QDomNode QDomNode::namedItem(const QString &name) const

返回nodeName() 等于name 的第一个直接子节点。

如果不存在这样的直接子节点,则返回null node

另请参见 nodeName()。

QString QDomNode::namespaceURI() const

返回节点的命名空间 URI,如果节点没有命名空间 URI,则返回空字符串。

只有ElementNodeAttributeNode 类型的节点才能有命名空间。命名空间 URI 必须在创建时指定,以后不能更改。

另请参阅 prefix()、localName()、QDomDocument::createElementNS() 和QDomDocument::createAttributeNS()。

QDomNode QDomNode::nextSibling() const

返回文档树中的下一个同级节点。更改返回的节点也会更改文档树中的节点。

如果您的 XML 文件是这样的

<h1>Heading</h1>
<p>The text...</p>
<h2>Next heading</h2>

且此QDomNode 表示 <p> 标记,nextSibling() 将返回表示 <h2> 标记的节点。

另请参见 previousSibling()。

QDomElement QDomNode::nextSiblingElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const

返回标签名tagName 和命名空间 URInamespaceURI 的下一个同级元素。如果tagName 为空,则返回namespaceURI 的下一个同级元素;如果namespaceURI 为空,则返回tagName 的下一个同级子元素。如果两个参数都为空,则返回下一个同级元素。如果没有同级元素,则返回空元素。

另请参见 firstChildElement()、previousSiblingElement() 和lastChildElement()。

QString QDomNode::nodeName() const

返回节点的名称。

名称的含义取决于子类:

名称名称
QDomAttr属性名称
QDomCDATASection字符串 "#cdata-section
QDomComment字符串 "#comment
QDomDocument字符串 "#document
QDomDocumentFragment字符串 "#文档-片段
QDomDocumentType文档类型名称
QDomElement标签名称
QDomEntity实体名称
QDomEntityReference引用实体的名称
QDomNotation符号名称
QDomProcessingInstruction处理指令的目标
QDomText字符串 "#text

注意:在处理元素和属性节点名称时,该函数不会考虑名称空间的存在。因此,返回的名称可能包含任何名称空间前缀。要获取元素或属性的节点名称,请使用localName() ;要获取命名空间前缀,请使用namespaceURI() 。

另请参见 nodeValue()。

QDomNode::NodeType QDomNode::nodeType() const

返回节点的类型。

另请参阅 toAttr(),toCDATASection(),toDocumentFragment(),toDocument(),toDocumentType(),toElement(),toEntityReference(),toText(),toEntity(),toNotation(),toProcessingInstruction(),toCharacterData(), 和toComment().

QString QDomNode::nodeValue() const

返回节点的值。

值的含义取决于子类:

名称名称
QDomAttr属性值
QDomCDATASectionCDATA 部分的内容
QDomComment注释
QDomProcessingInstruction处理指令的数据
QDomText文本

所有其他子类都没有节点值,将返回空字符串。

另请参阅 setNodeValue() 和nodeName()。

void QDomNode::normalize()

对一个元素调用 normalize() 会将其所有子元素转换为标准格式。这意味着相邻的QDomText 对象将合并为一个文本对象(QDomCDATASection 节点不会合并)。

QDomDocument QDomNode::ownerDocument() const

返回此节点所属的文档。

QDomNode QDomNode::parentNode() const

返回父节点。如果该节点没有父节点,则返回一个空节点(即isNull() 返回true 的节点)。

QString QDomNode::prefix() const

返回节点的命名空间前缀,如果节点没有命名空间前缀,则返回空字符串。

只有ElementNodeAttributeNode 类型的节点才能有命名空间。名称空间前缀必须在创建时指定。如果创建节点时使用了命名空间前缀,以后可以使用setPrefix() 进行更改。

如果使用QDomDocument::createElement() 或QDomDocument::createAttribute() 创建元素或属性,前缀将是空字符串。如果使用QDomDocument::createElementNS() 或QDomDocument::createAttributeNS() 创建元素或属性,前缀将不会是空字符串;但如果名称没有前缀,前缀可能是空字符串。

另请参阅 setPrefix()、localName()、namespaceURI()、QDomDocument::createElementNS() 和QDomDocument::createAttributeNS()。

QDomNode QDomNode::previousSibling() const

返回文档树中的前一个同级节点。更改返回的节点也会更改文档树中的节点。

例如,如果您的 XML 文件如下所示:

<h1>Heading</h1>
<p>The text...</p>
<h2>Next heading</h2>

且此QDomNode 表示 &lt;p&gt; 标记,则 previousSibling() 将返回表示 &lt;h1&gt; 标记的节点。

另请参阅 nextSibling().

QDomElement QDomNode::previousSiblingElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const

返回标签名为tagName 和命名空间 URI 为namespaceURI 的前一个同级元素。如果tagName 为空,则返回namespaceURI 的上一个同级元素;如果namespaceURI 为空,则返回tagName 的上一个同级元素。如果两个参数都为空,则返回上一个同级元素。如果没有同级元素,则返回空元素。

另请参见 firstChildElement()、nextSiblingElement() 和lastChildElement()。

QDomNode QDomNode::removeChild(const QDomNode &oldChild)

从子节点列表中删除oldChildoldChild 必须是该节点的直接子节点。

成功时返回oldChild 的新引用,失败时返回null node

另请参阅 insertBefore()、insertAfter()、replaceChild() 和appendChild()。

QDomNode QDomNode::replaceChild(const QDomNode &newChild, const QDomNode &oldChild)

newChild 替换oldChildoldChild 必须是此节点的直接子节点。

如果newChild 是另一个节点的子节点,它将被重新代理到此节点。如果newChild 是此节点的子节点,那么它在子节点列表中的位置将被更改。

如果newChildQDomDocumentFragment ,那么oldChild 将被该片段的所有子节点取代。

如果成功,则返回oldChild 的新引用;如果失败,则返回null node

另请参阅 insertBefore()、insertAfter()、removeChild() 和appendChild()。

void QDomNode::save(QTextStream &stream, int indent, QDomNode::EncodingPolicy encodingPolicy = QDomNode::EncodingFromDocument) const

将节点及其所有子节点的 XML 表示形式写入数据流stream 。该函数使用indent 作为节点的缩进空间。

如果文档包含无效的 XML 字符或无法用给定编码编码的字符,则结果和行为未定义。

如果encodingPolicyQDomNode::EncodingFromDocument ,且该节点是文档节点,则stream 的编码是通过将名称为 "xml "的处理指令视为 XML 声明(如果存在)来设置的,否则默认为 UTF-8。XML 声明不是处理指令,但由于历史原因存在这种行为。如果此节点不是文档节点,则使用文本流的编码。

如果encodingPolicyEncodingFromTextStream ,且此节点是文档节点,则此函数的行为与 save(QTextStream &str, int indent) 相同,但使用文本流stream 中指定的编码。

如果文档包含无效的 XML 字符或无法用给定编码编码的字符,则结果和行为未定义。

void QDomNode::setNodeValue(const QString &value)

将节点的值设置为value

另请参阅 nodeValue() 。

void QDomNode::setPrefix(const QString &pre)

如果节点有命名空间前缀,则此函数将节点的命名空间前缀更改为pre 。否则,此函数不会执行任何操作。

只有ElementNodeAttributeNode 类型的节点才能有命名空间。命名空间前缀必须在创建时指定,不可能在创建后添加命名空间前缀。

另请参见 prefix()、localName()、namespaceURI()、QDomDocument::createElementNS() 和QDomDocument::createAttributeNS() 。

QDomAttr QDomNode::toAttr() const

QDomNode 转换为QDomAttr 。如果节点不是属性,返回的对象将是null

另请参见 isAttr()。

QDomCDATASection QDomNode::toCDATASection() const

QDomNode 转换为QDomCDATASection 。如果节点不是 CDATA 部分,返回的对象将是null

另请参见 isCDATASection()。

QDomCharacterData QDomNode::toCharacterData() const

QDomNode 转换为QDomCharacterData 。如果节点不是字符数据节点,返回的对象将是null

另请参见 isCharacterData()。

QDomComment QDomNode::toComment() const

QDomNode 转换为QDomComment 。如果节点不是注释,返回的对象将是null

另请参见 isComment().

QDomDocument QDomNode::toDocument() const

QDomNode 转换为QDomDocument 。如果节点不是文档,返回的对象将是null

另请参阅 isDocument() 。

QDomDocumentFragment QDomNode::toDocumentFragment() const

QDomNode 转换为QDomDocumentFragment 。如果节点不是文档片段,返回的对象将是null

另请参阅 isDocumentFragment() 。

QDomDocumentType QDomNode::toDocumentType() const

QDomNode 转换为QDomDocumentType 。如果节点不是文档类型,返回的对象将是null

另请参阅 isDocumentType() 。

QDomElement QDomNode::toElement() const

QDomNode 转换为QDomElement 。如果节点不是元素,返回的对象将是null

另请参阅 isElement() 。

QDomEntity QDomNode::toEntity() const

QDomNode 转换为QDomEntity 。如果节点不是实体,返回的对象将是null

另请参见 isEntity()。

QDomEntityReference QDomNode::toEntityReference() const

QDomNode 转换为QDomEntityReference 。如果节点不是实体引用,返回的对象将是null

另请参阅 isEntityReference()。

QDomNotation QDomNode::toNotation() const

QDomNode 转换为QDomNotation 。如果节点不是符号,返回的对象将是null

另请参见 isNotation()。

QDomProcessingInstruction QDomNode::toProcessingInstruction() const

QDomNode 转换为QDomProcessingInstruction 。如果节点不是处理指令,返回的对象将是null

另请参阅 isProcessingInstruction() 。

QDomText QDomNode::toText() const

QDomNode 转换为QDomText 。如果节点不是文本,返回的对象将是null

另请参见 isText()。

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

如果other 和此 DOM 节点不相等,则返回true ;否则返回false

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

other 的副本分配给此 DOM 节点。

副本的数据是共享的(浅层副本):修改一个节点也会改变另一个节点。如果要进行深度复制,请使用cloneNode()。

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

如果other 和此 DOM 节点相等,则返回true ;否则返回false

QDomNode 的任何实例都是对QDomDocument 中底层数据结构的引用。相等测试将检查两个引用是否指向相同的底层节点。例如

QDomDocument document;
QDomElement element1 = document.documentElement();
QDomElement element2 = element1;

这两个节点(QDomElementQDomNode 的子类)都指向文档的根元素,element1 == element2 将返回 true。另一方面:

QDomElement element3 = document.createElement("MyElement");
QDomElement element4 = document.createElement("MyElement");

即使两个节点都是同名的空元素,element3 == element4 也会返回 false,因为它们指向的是底层数据结构中的两个不同节点。

相关非成员

QTextStream &operator<<(QTextStream &str, const QDomNode &node)

将节点node 及其所有子节点的 XML 表示写入数据流str

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