QDomNode Class
QDomNode 类是 DOM 树中所有节点的基类。更多内容...
| 标题: | #include <QDomNode> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Xml) target_link_libraries(mytarget PRIVATE Qt6::Xml) |
| qmake: | QT += xml |
| 被继承类: |
- 所有成员列表(包括继承的成员)
- QDomNode 属于XML 类。
注意:该类中的所有函数均为可重入函数。
公共类型
| 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() 来确定节点的类型。
可以通过以下函数将 QDomNode 转换为其子类之一:toAttr()、toCDATASection()、toDocumentFragment()、toDocument()、toDocumentType()、toElement()、toEntityReference()、toText()、toEntity()、toNotation()、toProcessingInstruction()、toCharacterData() 或toComment()。您还可以使用clear() 将节点转换为空节点。
QDomNode 类的副本通过显式共享来共享数据。这意味着修改一个节点将改变所有副本。这在与返回 QDomNode 的函数结合使用时特别有用,例如firstChild()。您可以使用cloneNode() 创建节点的独立(深度)副本。
QDomNode 可以为空(null),这与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();
}有关文档对象模型(DOM)的更多信息,请参阅第 1 级 和 第 2 级核心规范。有关 DOM 实现的更通用的介绍,请参阅QDomDocument 文档。
成员类型文档
enum QDomNode::EncodingPolicy
此枚举用于指定QDomNode::save()在序列化时如何确定应使用何种编码。
| 常量 | 值 | 描述 |
|---|---|---|
QDomNode::EncodingFromDocument | 1 | 编码是从文档中获取的。 |
QDomNode::EncodingFromTextStream | 2 | 从QTextStream 中获取编码。 |
另请参阅 QDomNode::save()。
enum QDomNode::NodeType
此枚举定义了节点的类型:
| 常量 | 值 | 描述 |
|---|---|---|
QDomNode::ElementNode | 1 | |
QDomNode::AttributeNode | 2 | |
QDomNode::TextNode | 3 | |
QDomNode::CDATASectionNode | 4 | |
QDomNode::EntityReferenceNode | 5 | |
QDomNode::EntityNode | 6 | |
QDomNode::ProcessingInstructionNode | 7 | |
QDomNode::CommentNode | 8 | |
QDomNode::DocumentNode | 9 | |
QDomNode::DocumentTypeNode | 10 | |
QDomNode::DocumentFragmentNode | 11 | |
QDomNode::NotationNode | 12 | |
QDomNode::BaseNode | 21 | 一个QDomNode 对象,即不是QDomNode 的子类。 |
QDomNode::CharacterDataNode | 22 |
成员函数文档
QDomNode::QDomNode()
创建一个null 节点。
QDomNode::QDomNode(const QDomNode &node)
创建node 的副本。
该副本的数据是共享的(浅拷贝):修改其中一个节点也会同时改变另一个节点。若需进行深拷贝,请使用cloneNode()。
[noexcept] QDomNode::~QDomNode()
销毁该对象并释放其资源。
QDomNode QDomNode::appendChild(const QDomNode &newChild)
将newChild 作为该节点的最后一个子节点追加。
如果newChild 是另一个节点的子节点,则将其重新归属于该节点。如果newChild 是该节点的子节点,则其在子节点列表中的位置将发生变化。
如果newChild 是QDomDocumentFragment ,则该片段的子节点将从片段中移除并追加。
如果newChild 是QDomElement ,且该节点是QDomDocument (该节点已有元素节点作为子节点),则newChild 不会被添加为子节点,并返回一个空节点。
成功时返回指向newChild 的新引用,失败时返回null node 。
在空节点(例如,由默认构造函数创建的)上调用此函数不会执行任何操作,并返回null node 。
DOM规范不允许插入属性节点,但出于历史原因,QDom仍然接受它们。
另请参阅 insertBefore()、insertAfter()、replaceChild() 以及removeChild()。
QDomNamedNodeMap QDomNode::attributes() const
返回包含所有属性的命名节点映射。仅为QDomElement提供属性。
修改该映射中的属性也将更改该QDomNode 的属性。
QDomNodeList QDomNode::childNodes() const
返回所有直接子节点的列表。
通常情况下,您会在QDomElement 对象上调用此函数。
例如,如果 XML 文档如下所示:
<body>
<h1>Heading</h1>
<p>Hello <b>you</b></p>
</body>那么“body”元素的子节点列表将包含由<h1>标签生成的节点和由<p>标签生成的节点。
列表中的节点不会被复制;因此,修改列表中的节点也会相应地改变该节点的子节点。
另请参阅 firstChild() 和lastChild()。
void QDomNode::clear()
将该节点转换为空节点;如果该节点此前并非空节点,则其类型和内容将被删除。
另请参阅 isNull()。
QDomNode QDomNode::cloneNode(bool deep = true) const
创建QDomNode 的深拷贝(而非浅拷贝)。
如果deep 为真,则克隆操作将递归进行,这意味着该节点的所有子节点也会被深度复制。如果deep 为假,则仅复制节点本身,且副本将不包含任何子节点。
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 必须是该节点的直接子节点。如果refChild 为null ,则newChild 将作为该节点的最后一个子节点追加。
如果newChild 是另一个节点的子节点,则将其父节点更改为本节点。如果newChild 是本节点的子节点,则其在子节点列表中的位置将被调整。
如果newChild 是QDomDocumentFragment ,则该片段的子节点将从片段中移除,并插入到refChild 之后。
成功时返回指向newChild 的新引用,失败时返回null node 。
DOM规范不允许插入属性节点,但出于历史原因,QDom仍然接受它们。
另请参阅 insertBefore()、replaceChild()、removeChild() 和appendChild()。
QDomNode QDomNode::insertBefore(const QDomNode &newChild, const QDomNode &refChild)
将节点newChild 插入到子节点refChild 之前。refChild 必须是该节点的直接子节点。如果refChild 属于null ,则将newChild 插入为该节点的第一个子节点。
如果newChild 是另一个节点的子节点,则将其重新归属于该节点。如果newChild 是该节点的子节点,则其在子节点列表中的位置将被更改。
如果newChild 是一个QDomDocumentFragment ,则该片段的子节点将从片段中移除,并插入到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
如果该节点使用命名空间,则此函数返回节点的本地名称;否则返回空字符串。
只有类型为ElementNode 或AttributeNode 的节点才能具有命名空间。命名空间必须在创建时指定;无法在创建后添加命名空间。
另请参阅 prefix()、namespaceURI()、QDomDocument::createElementNS() 和QDomDocument::createAttributeNS()。
QDomNode QDomNode::namedItem(const QString &name) const
返回第一个满足nodeName()等于name 的直接子节点。
如果不存在这样的直接子节点,则返回一个null node 。
另请参阅 nodeName()。
QString QDomNode::namespaceURI() const
返回该节点的命名空间 URI;如果节点没有命名空间 URI,则返回空字符串。
只有类型为ElementNode 或AttributeNode 的节点才能拥有命名空间。命名空间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 | 字符串“#document-fragment” |
| 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 | 属性值 |
| QDomCDATASection | CDATA 段的内容 |
| 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
返回节点的命名空间前缀;如果节点没有命名空间前缀,则返回空字符串。
只有类型为 `ElementNode ` 或 `AttributeNode ` 的节点才可拥有命名空间。命名空间前缀必须在创建时指定。如果节点在创建时已指定命名空间前缀,则可随后通过 `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 表示 <p> 标签,则 previousSibling() 将返回表示 <h1> 标签的节点。
另请参阅 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)
将oldChild 从子节点列表中移除。oldChild 必须是该节点的直接子节点。
成功时返回指向oldChild 的新引用;失败时返回null node 。
另请参阅 insertBefore()、insertAfter()、replaceChild() 以及appendChild()。
QDomNode QDomNode::replaceChild(const QDomNode &newChild, const QDomNode &oldChild)
将oldChild 替换为newChild 。oldChild 必须是该节点的直接子节点。
如果newChild 是另一个节点的子节点,则将其父节点更改为本节点。如果newChild 是本节点的子节点,则其在子节点列表中的位置将被更改。
如果newChild 是一个QDomDocumentFragment ,则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 字符或无法使用给定编码进行编码的字符,则结果和行为未定义。
如果encodingPolicy 为QDomNode::EncodingFromDocument 且该节点是文档节点,则通过将名称为“xml”的处理指令视为 XML 声明(如果存在)来设置文本流stream 的编码,否则默认使用 UTF-8。XML 声明并非处理指令,但出于历史原因,存在这种行为。 如果该节点不是文档节点,则使用文本流的编码。
如果encodingPolicy 为EncodingFromTextStream 且该节点是文档节点,则此函数的行为与 save(QTextStream &str, int indent) 相同,但会使用文本流stream 中指定的编码。
如果文档中包含无效的 XML 字符或无法使用给定编码进行编码的字符,则结果和行为未定义。
void QDomNode::setNodeValue(const QString &value)
将节点的值设置为value 。
另请参阅 nodeValue()。
void QDomNode::setPrefix(const QString &pre)
如果该节点具有命名空间前缀,则此函数将该节点的命名空间前缀更改为pre 。否则,此函数不执行任何操作。
只有类型为ElementNode 或AttributeNode 的节点才可拥有命名空间。命名空间前缀必须在创建时指定;无法在创建后添加命名空间前缀。
另请参阅 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;这两个节点(QDomElement 是QDomNode 的子类)都指向文档的根元素,因此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 。
© 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.