|  | Home · All Classes · Modules

# QDomNode Class Reference
[QtXml module]

The QDomNode class is the base class for all the nodes in a DOM tree. More...

Inherited by QDomAttr, QDomCharacterData, QDomDocument, QDomDocumentFragment, QDomDocumentType, QDomElement, QDomEntity, QDomEntityReference, QDomNotation and QDomProcessingInstruction.

### Types

- enum EncodingPolicy { EncodingFromDocument, EncodingFromTextStream }
- enum NodeType { ElementNode, AttributeNode, TextNode, CDATASectionNode, ..., CharacterDataNode }

### Methods

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

### Special Methods

- bool __eq__ (self, QDomNode)
- bool __ne__ (self, QDomNode)

## Detailed Description

The QDomNode class is the base class for all the nodes in a DOM tree.

Many functions in the DOM return a QDomNode.

You can find out the type of a node using isAttr(), isCDATASection(), isDocumentFragment(), isDocument(), isDocumentType(), isElement(), isEntityReference(), isText(), isEntity(), isNotation(), isProcessingInstruction(), isCharacterData() and isComment().

A QDomNode can be converted into one of its subclasses using toAttr(), toCDATASection(), toDocumentFragment(), toDocument(), toDocumentType(), toElement(), toEntityReference(), toText(), toEntity(), toNotation(), toProcessingInstruction(), toCharacterData() or toComment(). You can convert a node to a null node with clear().

Copies of the QDomNode class share their data using explicit sharing. This means that modifying one node will change all copies. This is especially useful in combination with functions which return a QDomNode, e.g. firstChild(). You can make an independent (deep) copy of the node with cloneNode().

A QDomNode can be null, much like a null pointer. Creating a copy of a null node results in another null node. It is not possible to modify a null node, but it is possible to assign another, possibly non-null node to it. In this case, the copy of the null node will remain null. You can check if a QDomNode is null by calling isNull(). The empty constructor of a QDomNode (or any of the derived classes) creates a null node.

Nodes are inserted with insertBefore(), insertAfter() or appendChild(). You can replace one node with another using replaceChild() and remove a node with removeChild().

To traverse nodes use firstChild() to get a node's first child (if any), and nextSibling() to traverse. QDomNode also provides lastChild(), previousSibling() and parentNode(). To find the first child node with a particular node name use namedItem().

To find out if a node has children use hasChildNodes() and to get a list of all of a node's children use childNodes().

The node's name and value (the meaning of which varies depending on its type) is returned by nodeName() and nodeValue() respectively. The node's type is returned by nodeType(). The node's value can be set with setNodeValue().

The document to which the node belongs is returned by ownerDocument().

Adjacent QDomText nodes can be merged into a single node with normalize().

QDomElement nodes have attributes which can be retrieved with attributes().

QDomElement and QDomAttr nodes can have namespaces which can be retrieved with namespaceURI(). Their local name is retrieved with localName(), and their prefix with prefix(). The prefix can be set with setPrefix().

You can write the XML representation of the node to a text stream with save().

The following example looks for the first element in an XML document and prints the names of all the elements that are its direct children.

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

For further information about the Document Object Model see Level 1 and Level 2 Core. For a more general introduction of the DOM implementation see the QDomDocument documentation.

## Type Documentation

### QDomNode.EncodingPolicy

This enum specifies how QDomNode.save() determines what encoding to use when serializing.

Constant | Value | Description
--- | --- | ---
`QDomNode.EncodingFromDocument` | `1` | The encoding is fetched from the document.
`QDomNode.EncodingFromTextStream` | `2` | The encoding is fetched from the QTextStream.

See also the overload of the save() function that takes an EncodingPolicy.

This enum was introduced or modified in Qt 4.3.

### QDomNode.NodeType

This enum defines the type of the node:

Constant | Value | Description
--- | --- | ---
`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` | A QDomNode object, i.e. not a QDomNode subclass.
`QDomNode.CharacterDataNode` | `22` |

## Method Documentation

### QDomNode.__init__ (self)

Constructs a null node.

### QDomNode.__init__ (self, QDomNode)

Constructs a copy of n.

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().

### QDomNode QDomNode.appendChild (self, QDomNode newChild)

Appends newChild as the node's last child.

If newChild is the child of another node, it is reparented to this node. If newChild is a child of this node, then its position in the list of children is changed.

If newChild is a QDomDocumentFragment, then the children of the fragment are removed from the fragment and appended.

If newChild is a QDomElement and this node is a QDomDocument that already has an element node as a child, newChild is not added as a child and a null node is returned.

Returns a new reference to newChild on success or a null node on failure.

Calling this function on a null node(created, for example, with the default constructor) does nothing and returns a null node.

The DOM specification disallow inserting attribute nodes, but for historical reasons, QDom accepts them anyway.

See also insertBefore(), insertAfter(), replaceChild(), and removeChild().

### QDomNamedNodeMap QDomNode.attributes (self)

Returns a named node map of all attributes. Attributes are only provided for QDomElements.

Changing the attributes in the map will also change the attributes of this QDomNode.

### QDomNodeList QDomNode.childNodes (self)

Returns a list of all direct child nodes.

Most often you will call this function on a QDomElement object.

For example, if the XML document looks like this:

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

Then the list of child nodes for the "body"-element will contain the node created by the &lt;h1&gt; tag and the node created by the &lt;p&gt; tag.

The nodes in the list are not copied; so changing the nodes in the list will also change the children of this node.

See also firstChild() and lastChild().

### QDomNode.clear (self)

Converts the node into a null node; if it was not a null node before, its type and contents are deleted.

See also isNull().

### QDomNode QDomNode.cloneNode (self, bool deep = True)

Creates a deep (not shallow) copy of the QDomNode.

If deep is true, then the cloning is done recursively which means that all the node's children are deep copied too. If deep is false only the node itself is copied and the copy will have no child nodes.

### int QDomNode.columnNumber (self)

For nodes created by QDomDocument.setContent(), this function returns the column number in the XML document where the node was parsed. Otherwise, -1 is returned.

This function was introduced in Qt 4.1.

See also lineNumber() and QDomDocument.setContent().

### QDomNode QDomNode.firstChild (self)

Returns the first child of the node. If there is no child node, a null node is returned. Changing the returned node will also change the node in the document tree.

See also lastChild() and childNodes().

### QDomElement QDomNode.firstChildElement (self, QString tagName = QString())

Returns the first child element with tag name tagName if tagName is non-empty; otherwise returns the first child element. Returns a null element if no such child exists.

See also lastChildElement(), previousSiblingElement(), and nextSiblingElement().

### bool QDomNode.hasAttributes (self)

Returns true if the node has attributes; otherwise returns false.

See also attributes().

### bool QDomNode.hasChildNodes (self)

Returns true if the node has one or more children; otherwise returns false.

### QDomNode QDomNode.insertAfter (self, QDomNode newChild, QDomNode refChild)

Inserts the node newChild after the child node refChild. refChild must be a direct child of this node. If refChild is null then newChild is appended as this node's last child.

If newChild is the child of another node, it is reparented to this node. If newChild is a child of this node, then its position in the list of children is changed.

If newChild is a QDomDocumentFragment, then the children of the fragment are removed from the fragment and inserted after refChild.

Returns a new reference to newChild on success or a null node on failure.

The DOM specification disallow inserting attribute nodes, but due to historical reasons QDom accept them nevertheless.

See also insertBefore(), replaceChild(), removeChild(), and appendChild().

### QDomNode QDomNode.insertBefore (self, QDomNode newChild, QDomNode refChild)

Inserts the node newChild before the child node refChild. refChild must be a direct child of this node. If refChild is null then newChild is inserted as the node's first child.

If newChild is the child of another node, it is reparented to this node. If newChild is a child of this node, then its position in the list of children is changed.

If newChild is a QDomDocumentFragment, then the children of the fragment are removed from the fragment and inserted before refChild.

Returns a new reference to newChild on success or a null node on failure.

The DOM specification disallow inserting attribute nodes, but due to historical reasons QDom accept them nevertheless.

See also insertAfter(), replaceChild(), removeChild(), and appendChild().

### bool QDomNode.isAttr (self)

Returns true if the node is an attribute; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomAttribute; you can get the QDomAttribute with toAttribute().

See also toAttr().

### bool QDomNode.isCDATASection (self)

Returns true if the node is a CDATA section; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomCDATASection; you can get the QDomCDATASection with toCDATASection().

See also toCDATASection().

### bool QDomNode.isCharacterData (self)

Returns true if the node is a character data node; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomCharacterData; you can get the QDomCharacterData with toCharacterData().

See also toCharacterData().

### bool QDomNode.isComment (self)

Returns true if the node is a comment; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomComment; you can get the QDomComment with toComment().

See also toComment().

### bool QDomNode.isDocument (self)

Returns true if the node is a document; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomDocument; you can get the QDomDocument with toDocument().

See also toDocument().

### bool QDomNode.isDocumentFragment (self)

Returns true if the node is a document fragment; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomDocumentFragment; you can get the QDomDocumentFragment with toDocumentFragment().

See also toDocumentFragment().

### bool QDomNode.isDocumentType (self)

Returns true if the node is a document type; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomDocumentType; you can get the QDomDocumentType with toDocumentType().

See also toDocumentType().

### bool QDomNode.isElement (self)

Returns true if the node is an element; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomElement; you can get the QDomElement with toElement().

See also toElement().

### bool QDomNode.isEntity (self)

Returns true if the node is an entity; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomEntity; you can get the QDomEntity with toEntity().

See also toEntity().

### bool QDomNode.isEntityReference (self)

Returns true if the node is an entity reference; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomEntityReference; you can get the QDomEntityReference with toEntityReference().

See also toEntityReference().

### bool QDomNode.isNotation (self)

Returns true if the node is a notation; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomNotation; you can get the QDomNotation with toNotation().

See also toNotation().

### bool QDomNode.isNull (self)

Returns true if this node is null (i.e. if it has no type or contents); otherwise returns false.

### bool QDomNode.isProcessingInstruction (self)

Returns true if the node is a processing instruction; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomProcessingInstruction; you can get the QProcessingInstruction with toProcessingInstruction().

See also toProcessingInstruction().

### bool QDomNode.isSupported (self, QString feature, QString version)

Returns true if the DOM implementation implements the feature feature and this feature is supported by this node in the version version; otherwise returns false.

See also QDomImplementation.hasFeature().

### bool QDomNode.isText (self)

Returns true if the node is a text node; otherwise returns false.

If this function returns true, it does not imply that this object is a QDomText; you can get the QDomText with toText().

See also toText().

### QDomNode QDomNode.lastChild (self)

Returns the last child of the node. If there is no child node, a null node is returned. Changing the returned node will also change the node in the document tree.

See also firstChild() and childNodes().

### QDomElement QDomNode.lastChildElement (self, QString tagName = QString())

Returns the last child element with tag name tagName if tagName is non-empty; otherwise returns the last child element. Returns a null element if no such child exists.

See also firstChildElement(), previousSiblingElement(), and nextSiblingElement().

### int QDomNode.lineNumber (self)

For nodes created by QDomDocument.setContent(), this function returns the line number in the XML document where the node was parsed. Otherwise, -1 is returned.

This function was introduced in Qt 4.1.

See also columnNumber() and QDomDocument.setContent().

### QString QDomNode.localName (self)

If the node uses namespaces, this function returns the local name of the node; otherwise it returns an empty string.

Only nodes of type ElementNode or AttributeNode can have namespaces. A namespace must have been specified at creation time; it is not possible to add a namespace afterwards.

QDomDocument.createAttributeNS()

See also prefix(), namespaceURI(), and QDomDocument.createElementNS().

### QDomNode QDomNode.namedItem (self, QString name)

Returns the first direct child node for which nodeName() equals name.

If no such direct child exists, a null node is returned.

See also nodeName().

### QString QDomNode.namespaceURI (self)

### QDomNode QDomNode.nextSibling (self)

Returns the next sibling in the document tree. Changing the returned node will also change the node in the document tree.

If you have XML like this:

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

and this QDomNode represents the <p> tag, nextSibling() will return the node representing the <h2> tag.

See also previousSibling().

### QDomElement QDomNode.nextSiblingElement (self, QString tagName = QString())

Returns the next sibling element with tag name tagName if tagName is non-empty; otherwise returns any next sibling element. Returns a null element if no such sibling exists.

See also firstChildElement(), previousSiblingElement(), and lastChildElement().

### QString QDomNode.nodeName (self)

Returns the name of the node.

The meaning of the name depends on the subclass:

Name | Meaning
--- | ---
QDomAttr | The name of the attribute
QDomCDATASection | The string "#cdata-section"
QDomComment | The string "#comment"
QDomDocument | The string "#document"
QDomDocumentFragment | The string "#document-fragment"
QDomDocumentType | The name of the document type
QDomElement | The tag name
QDomEntity | The name of the entity
QDomEntityReference | The name of the referenced entity
QDomNotation | The name of the notation
QDomProcessingInstruction | The target of the processing instruction
QDomText | The string "#text"

Note: This function does not take the presence of namespaces into account when processing the names of element and attribute nodes. As a result, the returned name can contain any namespace prefix that may be present. To obtain the node name of an element or attribute, use localName(); to obtain the namespace prefix, use namespaceURI().

See also nodeValue().

### NodeType QDomNode.nodeType (self)

Returns the type of the node.

See also toAttr(), toCDATASection(), toDocumentFragment(), toDocument(), toDocumentType(), toElement(), toEntityReference(), toText(), toEntity(), toNotation(), toProcessingInstruction(), toCharacterData(), and toComment().

### QString QDomNode.nodeValue (self)

Returns the value of the node.

The meaning of the value depends on the subclass:

Name | Meaning
--- | ---
QDomAttr | The attribute value
QDomCDATASection | The content of the CDATA section
QDomComment | The comment
QDomProcessingInstruction | The data of the processing instruction
QDomText | The text

All the other subclasses do not have a node value and will return an empty string.

See also setNodeValue() and nodeName().

### QDomNode.normalize (self)

Calling normalize() on an element converts all its children into a standard form. This means that adjacent QDomText objects will be merged into a single text object (QDomCDATASection nodes are not merged).

### QDomDocument QDomNode.ownerDocument (self)

Returns the document to which this node belongs.

### QDomNode QDomNode.parentNode (self)

Returns the parent node. If this node has no parent, a null node is returned (i.e. a node for which isNull() returns true).

### QString QDomNode.prefix (self)

Returns the namespace prefix of the node or an empty string if the node has no namespace prefix.

Only nodes of type ElementNode or AttributeNode can have namespaces. A namespace prefix must be specified at creation time. If a node was created with a namespace prefix, you can change it later with setPrefix().

If you create an element or attribute with QDomDocument.createElement() or QDomDocument.createAttribute(), the prefix will be an empty string. If you use QDomDocument.createElementNS() or QDomDocument.createAttributeNS() instead, the prefix will not be an empty string; but it might be an empty string if the name does not have a prefix.

QDomDocument.createElementNS() QDomDocument.createAttributeNS()

See also setPrefix(), localName(), and namespaceURI().

### QDomNode QDomNode.previousSibling (self)

Returns the previous sibling in the document tree. Changing the returned node will also change the node in the document tree.

For example, if you have XML like this:

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

and this QDomNode represents the &lt;p&gt; tag, previousSibling() will return the node representing the &lt;h1&gt; tag.

See also nextSibling().

### QDomElement QDomNode.previousSiblingElement (self, QString tagName = QString())

Returns the previous sibilng element with tag name tagName if tagName is non-empty; otherwise returns any previous sibling element. Returns a null element if no such sibling exists.

See also firstChildElement(), nextSiblingElement(), and lastChildElement().

### QDomNode QDomNode.removeChild (self, QDomNode oldChild)

Removes oldChild from the list of children. oldChild must be a direct child of this node.

Returns a new reference to oldChild on success or a null node on failure.

See also insertBefore(), insertAfter(), replaceChild(), and appendChild().

### QDomNode QDomNode.replaceChild (self, QDomNode newChild, QDomNode oldChild)

Replaces oldChild with newChild. oldChild must be a direct child of this node.

If newChild is the child of another node, it is reparented to this node. If newChild is a child of this node, then its position in the list of children is changed.

If newChild is a QDomDocumentFragment, then oldChild is replaced by all of the children of the fragment.

Returns a new reference to oldChild on success or a null node an failure.

See also insertBefore(), insertAfter(), removeChild(), and appendChild().

### QDomNode.save (self, QTextStream, int)

Writes the XML representation of the node and all its children to the stream str. This function uses indent as the amount of space to indent the node.

If this node is a document node, the encoding of text stream str's encoding is set by treating a processing instruction by name "xml" as an XML declaration, if such a one exists, and otherwise defaults to UTF-8. XML declarations are not processing instructions, but this behavior exists for historical reasons. If this node is not a document node, the text stream's encoding is used.

If the document contains invalid XML characters or characters that cannot be encoded in the given encoding, the result and behavior is undefined.

### QDomNode.save (self, QTextStream, int, EncodingPolicy)

If encodingPolicy is QDomNode.EncodingFromDocument, this function behaves as save(QTextStream &str, int indent).

If encodingPolicy is EncodingFromTextStream and this node is a document node, this function behaves as save(QTextStream &str, int indent) with the exception that the encoding specified in the text stream str is used.

If the document contains invalid XML characters or characters that cannot be encoded in the given encoding, the result and behavior is undefined.

This function was introduced in Qt 4.2.

### QDomNode.setNodeValue (self, QString)

Sets the node's value to v.

See also nodeValue().

### QDomNode.setPrefix (self, QString pre)

If the node has a namespace prefix, this function changes the namespace prefix of the node to pre. Otherwise this function does nothing.

Only nodes of type ElementNode or AttributeNode can have namespaces. A namespace prefix must have be specified at creation time; it is not possible to add a namespace prefix afterwards.

QDomDocument.createElementNS() QDomDocument.createAttributeNS()

See also prefix(), localName(), and namespaceURI().

### QDomAttr QDomNode.toAttr (self)

Converts a QDomNode into a QDomAttr. If the node is not an attribute, the returned object will be null.

See also isAttr().

### QDomCDATASection QDomNode.toCDATASection (self)

Converts a QDomNode into a QDomCDATASection. If the node is not a CDATA section, the returned object will be null.

See also isCDATASection().

### QDomCharacterData QDomNode.toCharacterData (self)

Converts a QDomNode into a QDomCharacterData. If the node is not a character data node the returned object will be null.

See also isCharacterData().

### QDomComment QDomNode.toComment (self)

Converts a QDomNode into a QDomComment. If the node is not a comment the returned object will be null.

See also isComment().

### QDomDocument QDomNode.toDocument (self)

Converts a QDomNode into a QDomDocument. If the node is not a document the returned object will be null.

See also isDocument().

### QDomDocumentFragment QDomNode.toDocumentFragment (self)

Converts a QDomNode into a QDomDocumentFragment. If the node is not a document fragment the returned object will be null.

See also isDocumentFragment().

### QDomDocumentType QDomNode.toDocumentType (self)

Converts a QDomNode into a QDomDocumentType. If the node is not a document type the returned object will be null.

See also isDocumentType().

### QDomElement QDomNode.toElement (self)

Converts a QDomNode into a QDomElement. If the node is not an element the returned object will be null.

See also isElement().

### QDomEntity QDomNode.toEntity (self)

Converts a QDomNode into a QDomEntity. If the node is not an entity the returned object will be null.

See also isEntity().

### QDomEntityReference QDomNode.toEntityReference (self)

Converts a QDomNode into a QDomEntityReference. If the node is not an entity reference, the returned object will be null.

See also isEntityReference().

### QDomNotation QDomNode.toNotation (self)

Converts a QDomNode into a QDomNotation. If the node is not a notation the returned object will be null.

See also isNotation().

### QDomProcessingInstruction QDomNode.toProcessingInstruction (self)

Converts a QDomNode into a QDomProcessingInstruction. If the node is not a processing instruction the returned object will be null.

See also isProcessingInstruction().

### QDomText QDomNode.toText (self)

Converts a QDomNode into a QDomText. If the node is not a text, the returned object will be null.

See also isText().

### bool QDomNode.__eq__ (self, QDomNode)

### bool QDomNode.__ne__ (self, QDomNode)