- Qbs Manual
- List of Built-in Services
- Xml Service
- Qbs 2.0.0

# Xml Service

The `Xml` service enables you to access and manipulate XML Document Object Model (DOM) documents. The entire document is a document node, each XML element is an element node, the text paragraphs in the XML elements are text nodes, and each attribute is an attribute node.

XML DOM presents documents as tree structures. The contents of the nodes can be accessed in the tree. They can be modified or deleted, and new nodes can be created.

The nodes in the node tree have a hierarchical relationship to each other. The top node is called the root. Each node, except the root, has exactly one parent node, while it can have any number of children. Nodes with the same parent are called siblings.

## XML DOM Document Node Operations

A document node represents an entire document. That is, the root of the DOM tree.

### Constructor

     Xml.DomDocument()

Creates an XML DOM root node that can contain one element.

### createCDATASection

     Xml.DomDocument.createCDATASection(value: string)

Creates a CDATA section that is not parsed by a parser. It can be used to include XML fragments without having to escape the delimiters, for example. Tags inside the section are not treated as markup nor are entities expanded.

### createElement

     Xml.DomDocument.createElement(tagName: string)

Creates an element that can contain other elements, CDATA sections, and text nodes.

### createTextNode

     Xml.DomDocument.createTextNode(value: string)

Creates a text node that represents textual content in an element or attribute.

### documentElement

     Xml.DomDocument.documentElement()

Returns the document element.

### load

     Xml.DomDocument.load(filePath: string): void

Loads the document specified by `filePath`.

### save

     Xml.DomDocument.save(filePath: string, indentation: int): void

Saves the document at the location specified by `filePath` with the indentation specified by `int`.

### setContent

     Xml.DomDocument.setContent(content: string)

Returns the content of the document.

### toString

     Xml.DomDocument.toString(indentation: int)

Converts the document to a string with the indentation specified by `int`.

## XML DOM Node Operations

A node represents a single node in the document tree. There are several different types of nodes, such as element, attribute, and text nodes.

All objects inherit the node properties for handling parents and children, even if they cannot have parents or children. For example, attempting to add children to text nodes results in a DOM error.

### Constructor

     Xml.DomNode()

Creates an XML DOM node.

### appendChild

     Xml.DomNode.appendChild(tagName: string)

Appends a new child node to the end of the list of children of a node.

### attribute

     Xml.DomNode.attribute(name: string, defaultValue: string)

Returns the name and default value of the attribute.

### clear

     Xml.DomNode.clear()

Clears the contents of the node.

### data

     Xml.DomNode.data()

Returns the contents of the text node, CDATA section, or character data node.

### firstChild

     Xml.DomNode.firstChild(tagName: string)

Returns the first child of a node.

### hasAttribute

     Xml.DomNode.hasAttribute(name: string) boolean

Returns `true` if the node has the specified attribute.

### hasAttributes

     Xml.DomNode.hasAttributes() boolean

Returns `true` if the node has attributes.

### hasChildNodes

     Xml.DomNode.hasChildNodes() boolean

Returns `true` if the node has children.

### insertAfter

     Xml.DomNode.insertAfter(newChild: tagName, refChild: tagName)

Inserts a new child node after the child node specified by `refChild`.

### insertBefore

     Xml.DomNode.insertBefore(newChild: tagName, refChild: tagName)

Inserts a new child node before the child node specified by `refChild`.

### isCDATASection

     Xml.DomNode.isCDATASection() boolean

Returns `true` if this is a CDATA section.

### isElement

     Xml.DomNode.isElement() boolean

Returns `true` if this is an element.

### isText

     Xml.DomNode.isText() boolean

Returns `true` if this is a text node.

### lastChild

     Xml.DomNode.lastChild(tagName: string)

Returns the last child of a node.

### nextSibling

     Xml.DomNode.nextSibling(tagName: string)

Returns the node immediately following a node.

### parentNode

     Xml.DomNode.parentNode()

Returns the parent of the node.

### previousSibling

     Xml.DomNode.previousSibling(tagName: string)

Returns the node before a node.

### removeChild

     Xml.DomNode.removeChild(tagName: string)

Removes the child node.

### replaceChild

     Xml.DomNode.replaceChild(newChild: tagName, oldChild: tagName)

Replaces a child node with another one.

### setAttribute

     Xml.DomNode.setAttribute(name: string, value: string)

Sets the name and value of an attribute.

### setData

     Xml.DomNode.setData(value: string): void

Sets the data of the node to a text node, CDATA section, or character data node.

### setTagName

     Xml.DomNode.setTagName(tagName: string)

Sets the tag name of the node.

### tagName

     Xml.DomNode.tagName()

Returns the tag name of the node.

### text

     Xml.DomNode.text()

Returns the text of the node.