target_link_libraries(mytarget PRIVATE Qt6::Xml)
qmake: QT += xml
Inherits:
The parsed XML is represented internally by a tree of objects that can be accessed using the various QDom classes. All QDom classes only
reference
objects in the internal tree. The internal objects in the DOM tree will get deleted once the last QDom object referencing them or the QDomDocument itself is deleted.
Creation of elements, text nodes, etc. is done using the various factory functions provided in this class. Using the default constructors of the QDom classes will only result in empty objects that cannot be manipulated or inserted into the Document.
It is possible to insert a node from another document into the document using
importNode
().
For further information about the Document Object Model see the Document Object Model (DOM)
Level 1
and
Level 2 Core
Specifications.
This enum was introduced in Qt 6.5.
The ParseOptions type is a typedef for
QFlags
<ParseOption>. It stores an OR combination of ParseOption values.
See also
setContent
().
Member Function Documentation
This function parses the XML document from the byte array
data
, string view
text
, IO
device
, or stream
reader
and sets it as the content of the document. It tries to detect the encoding of the document, in accordance with the XML specification. Returns the result of parsing in
ParseResult
, which explicitly converts to
bool
.
You can use the
options
parameter to specify different parsing options, for example, to enable namespace processing, etc.
By default, namespace processing is disabled. If it's disabled, the parser does no namespace processing when it reads the XML file. The functions
QDomNode::prefix
(),
QDomNode::localName
() and
QDomNode::namespaceURI
() return an empty string.
If namespace processing is enabled via the parse
options
, the parser recognizes namespaces in the XML file and sets the prefix name, local name and namespace URI to appropriate values. The functions
QDomNode::prefix
(),
QDomNode::localName
() and
QDomNode::namespaceURI
() return a string for all elements and attributes and return an empty string if the element or attribute has no prefix.
Text nodes consisting only of whitespace are stripped and won't appear in the
QDomDocument
. Since Qt 6.5, one can pass
QDomDocument::ParseOption::PreserveSpacingOnlyNodes
as a parse option, to specify that spacing-only text nodes must be preserved.
Entity references are handled as follows:
References to internal general entities and character entities occurring in the content are included. The result is a
QDomText
node with the references replaced by their corresponding entity values.
References to parameter entities occurring in the internal subset are included. The result is a
QDomDocumentType
node which contains entity and notation declarations with the references replaced by their corresponding entity values.
Any general parsed entity reference which is not defined in the internal subset and which occurs in the content is represented as a
QDomEntityReference
node.
Any parsed entity reference which is not defined in the internal subset and which occurs outside of the content is replaced with an empty string.
Any unparsed entity reference is replaced with an empty string.
Note:
The overload taking IO
device
will try to open it in read-only mode if it is not already open. In that case, the caller is responsible for calling close. This will change in Qt 7, which will no longer open the IO
device
. Applications should therefore open the device themselves before calling
setContent
().
This function was introduced in Qt 6.5.
See also
ParseResult
and
ParseOptions
.
QDomDocument::
QDomDocument
()
Constructs an empty document.
Creates a document and sets the name of the document type to
name
.
Creates a document with the document type
doctype
.
See also
QDomImplementation::createDocumentType
().
QDomDocument::
QDomDocument
(const
QDomDocument
&
x
)
Constructs a copy of
x
.
The data of the copy is shared (shallow copy): modifying one node will also change the other. If you want to make a deep copy, use
cloneNode
().
QDomDocument::
~QDomDocument
()
Destroys the object and frees its resources.
QDomAttr
QDomDocument::
createAttribute
(const
QString
&
name
)
Creates a new attribute called
name
that can be inserted into an element, e.g. using
QDomElement::setAttributeNode
().
If
name
is not a valid XML name, the behavior of this function is governed by
QDomImplementation::InvalidDataPolicy
.
See also
createAttributeNS
().
QDomAttr
QDomDocument::
createAttributeNS
(const
QString
&
nsURI
, const
QString
&
qName
)
Creates a new attribute with namespace support that can be inserted into an element. The name of the attribute is
qName
and the namespace URI is
nsURI
. This function also sets
QDomNode::prefix
() and
QDomNode::localName
() to appropriate values (depending on
qName
).
If
qName
is not a valid XML name, the behavior of this function is governed by
QDomImplementation::InvalidDataPolicy
.
See also
createAttribute
().
QDomCDATASection
QDomDocument::
createCDATASection
(const
QString
&
value
)
Creates a new CDATA section for the string
value
that can be inserted into the document, e.g. using
QDomNode::appendChild
().
If
value
contains characters which cannot be stored in a CDATA section, the behavior of this function is governed by
QDomImplementation::InvalidDataPolicy
.
See also
QDomNode::appendChild
(),
QDomNode::insertBefore
(), and
QDomNode::insertAfter
().
Creates a new comment for the string
value
that can be inserted into the document, e.g. using
QDomNode::appendChild
().
If
value
contains characters which cannot be stored in an XML comment, the behavior of this function is governed by
QDomImplementation::InvalidDataPolicy
.
See also
QDomNode::appendChild
(),
QDomNode::insertBefore
(), and
QDomNode::insertAfter
().
QDomDocumentFragment
QDomDocument::
createDocumentFragment
()
Creates a new document fragment, that can be used to hold parts of the document, e.g. when doing complex manipulations of the document tree.
QDomElement
QDomDocument::
createElement
(const
QString
&
tagName
)
Creates a new element called
tagName
that can be inserted into the DOM tree, e.g. using
QDomNode::appendChild
().
If
tagName
is not a valid XML name, the behavior of this function is governed by
QDomImplementation::InvalidDataPolicy
.
See also
createElementNS
(),
QDomNode::appendChild
(),
QDomNode::insertBefore
(), and
QDomNode::insertAfter
().
QDomElement
QDomDocument::
createElementNS
(const
QString
&
nsURI
, const
QString
&
qName
)
Creates a new element with namespace support that can be inserted into the DOM tree. The name of the element is
qName
and the namespace URI is
nsURI
. This function also sets
QDomNode::prefix
() and
QDomNode::localName
() to appropriate values (depending on
qName
).
If
qName
is an empty string, returns a null element regardless of whether the invalid data policy is set.
See also
createElement
().
QDomEntityReference
QDomDocument::
createEntityReference
(const
QString
&
name
)
Creates a new entity reference called
name
that can be inserted into the document, e.g. using
QDomNode::appendChild
().
If
name
is not a valid XML name, the behavior of this function is governed by
QDomImplementation::InvalidDataPolicy
.
See also
QDomNode::appendChild
(),
QDomNode::insertBefore
(), and
QDomNode::insertAfter
().
Creates a new processing instruction that can be inserted into the document, e.g. using
QDomNode::appendChild
(). This function sets the target for the processing instruction to
target
and the data to
data
.
If
target
is not a valid XML name, or data if contains characters which cannot appear in a processing instruction, the behavior of this function is governed by
QDomImplementation::InvalidDataPolicy
.
See also
QDomNode::appendChild
(),
QDomNode::insertBefore
(), and
QDomNode::insertAfter
().
QDomText
QDomDocument::
createTextNode
(const
QString
&
value
)
Creates a text node for the string
value
that can be inserted into the document tree, e.g. using
QDomNode::appendChild
().
If
value
contains characters which cannot be stored as character data of an XML document (even in the form of character references), the behavior of this function is governed by
QDomImplementation::InvalidDataPolicy
.
See also
QDomNode::appendChild
(),
QDomNode::insertBefore
(), and
QDomNode::insertAfter
().
Returns the document type of this document.
QDomElement
QDomDocument::
documentElement
() const
Returns the root element of the document.
QDomElement
QDomDocument::
elementById
(const
QString
&
elementId
)
Returns the element whose ID is equal to
elementId
. If no element with the ID was found, this function returns a
null element
.
Since the QDomClasses do not know which attributes are element IDs, this function returns always a
null element
. This may change in a future version.
QDomNodeList
QDomDocument::
elementsByTagName
(const
QString
&
tagname
) const
Returns a
QDomNodeList
, that contains all the elements in the document with the name
tagname
. The order of the node list is the order they are encountered in a preorder traversal of the element tree.
See also
elementsByTagNameNS
() and
QDomElement::elementsByTagName
().
QDomNodeList
QDomDocument::
elementsByTagNameNS
(const
QString
&
nsURI
, const
QString
&
localName
)
Returns a
QDomNodeList
that contains all the elements in the document with the local name
localName
and a namespace URI of
nsURI
. The order of the node list is the order they are encountered in a preorder traversal of the element tree.
See also
elementsByTagName
() and
QDomElement::elementsByTagNameNS
().
QDomImplementation
QDomDocument::
implementation
() const
Returns a
QDomImplementation
object.
QDomNode
QDomDocument::
importNode
(const
QDomNode
&
importedNode
,
bool
deep
)
Imports the node
importedNode
from another document to this document.
importedNode
remains in the original document; this function creates a copy that can be used within this document.
This function returns the imported node that belongs to this document. The returned node has no parent. It is not possible to import
QDomDocument
and
QDomDocumentType
nodes. In those cases this function returns a
null node
.
If
importedNode
is a
null node
, a null node is returned.
If
deep
is true, this function imports not only the node
importedNode
but its whole subtree; if it is false, only the
importedNode
is imported. The argument
deep
has no effect on
QDomAttr
and
QDomEntityReference
nodes, since the descendants of
QDomAttr
nodes are always imported and those of
QDomEntityReference
nodes are never imported.
The behavior of this function is slightly different depending on the node types:
See also
QDomElement::setAttribute
(),
QDomNode::insertBefore
(),
QDomNode::insertAfter
(),
QDomNode::replaceChild
(),
QDomNode::removeChild
(), and
QDomNode::appendChild
().
Returns
DocumentNode
.
QByteArray
QDomDocument::
toByteArray
(
int
indent
= 1) const
Converts the parsed document back to its textual representation and returns a
QByteArray
containing the data encoded as UTF-8.
This function uses
indent
as the amount of space to indent subelements.
See also
toString
().
QString
QDomDocument::
toString
(
int
indent
= 1) const
Converts the parsed document back to its textual representation.
This function uses
indent
as the amount of space to indent subelements.
If
indent
is -1, no whitespace at all is added.
Assigns
x
to this DOM document.
The data of the copy is shared (shallow copy): modifying one node will also change the other. If you want to make a deep copy, use
cloneNode
().
©
2024 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.
Constant
|
Value
|
Description
|
QDomDocument::ParseOption::Default
|
0x00
|
No parse options are set.
|
QDomDocument::ParseOption::UseNamespaceProcessing
|
0x01
|
Namespace processing is enabled.
|
QDomDocument::ParseOption::PreserveSpacingOnlyNodes
|
0x02
|
Text nodes containing only spacing characters are preserved.
|
Node Type
|
Behavior
|
QDomAttr
|
The owner element is set to 0 and the specified flag is set to true in the generated attribute. The whole subtree of
importedNode
is always imported for attribute nodes:
deep
has no effect.
|
QDomDocument
|
Document nodes cannot be imported.
|
QDomDocumentFragment
|
If
deep
is true, this function imports the whole document fragment; otherwise it only generates an empty document fragment.
|
QDomDocumentType
|
Document type nodes cannot be imported.
|
QDomElement
|
Attributes for which
QDomAttr::specified
() is true are also imported, other attributes are not imported. If
deep
is true, this function also imports the subtree of
importedNode
; otherwise it imports only the element node (and some attributes, see above).
|
QDomEntity
|
Entity nodes can be imported, but at the moment there is no way to use them since the document type is read-only in DOM level 2.
|
QDomEntityReference
|
Descendants of entity reference nodes are never imported:
deep
has no effect.
|
QDomNotation
|
Notation nodes can be imported, but at the moment there is no way to use them since the document type is read-only in DOM level 2.
|
QDomProcessingInstruction
|
The target and value of the processing instruction is copied to the new node.
|
QDomText
|
The text is copied to the new node.
|
QDomCDATASection
|
The text is copied to the new node.
|
QDomComment
|
The text is copied to the new node.
|