---
title: "tinymce.html.DomParser"
description: "This class parses HTML code into a DOM like structure of nodes it will remove redundant whitespace and make sure that the node tree is valid according to the specified schema. So for example: &amp;lt;p&amp;gt;a&amp;lt;p&amp;gt;b&amp;lt;/p&amp;gt;c&amp;lt;/p&amp;gt; will become &amp;lt;p&amp;gt;a&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;b&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;c&amp;lt;/p&amp;gt;"
canonical_url: "https://www.tiny.cloud/docs/tinymce/latest/apis/tinymce.html.domparser/"
md_url: "https://www.tiny.cloud/docs/tinymce/5/apis/tinymce.html.domparser/index.md"
version: "5"
last_updated: "2024-03-26T08:09:19Z"
tokens: 778
---
Important This page documents TinyMCE 5. For new projects, Tiny recommends using the latest, most up-to-date version. [See TinyMCE 8 documentation](../../../latest/apis/tinymce.html.domparser/).
# tinymce.html.DomParser

This class parses HTML code into a DOM like structure of nodes it will remove redundant whitespace and make sure that the node tree is valid according to the specified schema. So for example: <p>a<p>b</p>c</p> will become <p>a</p><p>b</p><p>c</p>

## Examples

```javascript
var parser = new tinymce.html.DomParser({validate: true}, schema);
var rootNode = parser.parse('<h1>content</h1>');
```

## Summary

### Methods

| Name | Summary | Defined by |
| --- | --- | --- |
| [addAttributeFilter()](#addAttributeFilter) | Adds a attribute filter function to the parser, the parser will collect nodes that has the specified attributes and then execute the callback once it has finished parsing the document. | `DomParser` |
| [addNodeFilter()](#addNodeFilter) | Adds a node filter function to the parser, the parser will collect the specified nodes by name and then execute the callback once it has finished parsing the document. | `DomParser` |
| [filterNode()](#filterNode) | Runs the specified node though the element and attributes filters. | `DomParser` |
| [parse()](#parse) | Parses the specified HTML string into a DOM like node tree and returns the result. | `DomParser` |

## Methods

### addAttributeFilter()

```javascript
addAttributeFilter(name: String, callback: function)
```
Adds a attribute filter function to the parser, the parser will collect nodes that has the specified attributes
and then execute the callback once it has finished parsing the document.

#### Examples

```javascript
parser.addAttributeFilter('src,href', function(nodes, name) {
 for (var i = 0; i < nodes.length; i++) {
  console.log(nodes[i].name);
 }
});
```

#### Parameters

- `name (String)` - Comma separated list of nodes to collect.
- `callback (function)` - Callback function to execute once it has collected nodes.

### addNodeFilter()

```javascript
addNodeFilter(callback: function)
```
Adds a node filter function to the parser, the parser will collect the specified nodes by name
and then execute the callback once it has finished parsing the document.

#### Examples

```javascript
parser.addNodeFilter('p,h1', function(nodes, name) {
 for (var i = 0; i < nodes.length; i++) {
  console.log(nodes[i].name);
 }
});
```

#### Parameters

- `callback (function)` - Callback function to execute once it has collected nodes.

### filterNode()

```javascript
filterNode(node: tinymce.html.Node): tinymce.html.Node
```
Runs the specified node though the element and attributes filters.

#### Parameters

- `node (Node)` - the node to run filters on.

#### Return value

- `Node` - The passed in node.

### parse()

```javascript
parse(html: String, args: Object): tinymce.html.Node
```
Parses the specified HTML string into a DOM like node tree and returns the result.

#### Examples

```javascript
var rootNode = new DomParser({...}).parse('<b>text</b>');
```

#### Parameters

- `html (String)` - Html string to sax parse.
- `args (Object)` - Optional args object that gets passed to all filter functions.

#### Return value

- `Node` - Root node containing the tree.
