---
product: Chilkat
product_version: 11.7.0
language: pascal
language_label: Lazarus Pascal
class: HtmlToXml
license: bundle
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/pascal_HtmlToXmlRef.html
---
# Chilkat HtmlToXml — Lazarus Pascal — v11.7.0

> Chilkat 11.7.0 · language=pascal · class=HtmlToXml
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/HtmlToXml.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/guide.md`.

## Purpose

**Convert HTML into well-formed XML for structured parsing and searching.**

`Chilkat.HtmlToXml` converts HTML into well-formed XML so the content can be parsed, searched, transformed, or processed programmatically with XML tools. It can accept HTML from strings, files, byte arrays, `BinData`, or `StringBuilder`, and provides options for dropping selected tags, removing common text-formatting tags, controlling non-breaking spaces, choosing the XML charset, and saving the converted XML to a file.

**HTML to XML conversion**

Convert real-world HTML into well-formed XML that can be loaded into `Chilkat.Xml` or other XML processing tools.

**Flexible input sources**

Supply HTML from strings, files, byte arrays, `BinData`, or `StringBuilder` depending on how the content is received or built.

**Drop selected tags**

Remove specific tag types from the output when the application wants a cleaner XML result focused on relevant content.

**Text-formatting cleanup**

Drop common formatting tags when the structure matters more than visual presentation.

**NBSP handling**

Control how non-breaking spaces are represented, converted, removed, or preserved in the XML output.

**Charset and file output**

Choose the XML charset and write the converted XML directly to a file when a persisted result is needed.

**Common pattern:** Load or assign the HTML, set any cleanup options such as dropped tags, text-formatting removal, `Nbsp` behavior, and `XmlCharset`, then call the conversion method and parse the result as XML. Use `HtmlToXml` when structured extraction is needed; use `HtmlToText` when the goal is readable plain text.

For an extended overview, see [HtmlToXml Class Overview](https://www.chilkatsoft.com/htmltoxml_class_overview.asp).

## Object creation, unlocking and error handling

**Create / Free**

```pascal
uses
  Chilkat.HtmlToXml;

var
  obj: THtmlToXml;
begin
  obj := THtmlToXml.Create;
  try
    if not obj.IsValid then
      raise Exception.Create('Failed to create a THtmlToXml instance.');

    // ... use obj ...

  finally
    obj.Free;
  end;
end;
```

`constructor Create;`

Allocates the underlying CkHtmlToXml object and returns a new THtmlToXml instance. Simply adding **Chilkat.HtmlToXml** to the unit's `uses` clause is enough to locate and bind to the Chilkat shared library (DLL / .so / .dylib) at runtime — no separate load step is required. Check `obj.IsValid` after calling `Create`; it is `False` if the underlying library could not be found/loaded or the object could not be allocated (for example, when unlicensed).

`destructor Destroy; override;`

Every THtmlToXml created by calling `Create` should eventually be released by calling `.Free` (inherited from `TObject`). The destructor automatically disposes the underlying CkHtmlToXml handle. A native (unmanaged) memory leak occurs if the object is never freed.

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in Lazarus Pascal.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `property DebugLogFilePath: string read GetDebugLogFilePath write SetDebugLogFilePath;` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `property LastErrorHtml: string read GetLastErrorHtml;` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `property LastErrorText: string read GetLastErrorText;` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `property LastErrorXml: string read GetLastErrorXml;` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `property LastMethodSuccess: Boolean read GetLastMethodSuccess write SetLastMethodSuccess;` | read/write | Indicates the success or failure of the most recent method call: `True` means success, `False` means failure. |
| `VerboseLogging` | `property VerboseLogging: Boolean read GetVerboseLogging write SetVerboseLogging;` | read/write | If set to `True`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `property Version: string read GetVersion;` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `DropCustomTags` | property, read/write | `property DropCustomTags: Boolean read GetDropCustomTags write SetDropCustomTags;` |
| `Html` | property, read/write | `property Html: string read GetHtml write SetHtml;` |
| `Nbsp` | property, read/write | `property Nbsp: Integer read GetNbsp write SetNbsp;` |
| `XmlCharset` | property, read/write | `property XmlCharset: string read GetXmlCharset write SetXmlCharset;` |
| `ConvertFile` | method | `function ConvertFile(const inHtmlPath: string;     const destXmlPath: string): Boolean;` |
| `DropTagType` | method | `procedure DropTagType(const tagName: string);` |
| `DropTextFormattingTags` | method | `procedure DropTextFormattingTags;` |
| `SetHtmlBd` | method | `// bd is a TBinData object. function SetHtmlBd(bd: TChilkatBase): Boolean;` |
| `SetHtmlFromFile` | method | `function SetHtmlFromFile(const filename: string): Boolean;` |
| `SetHtmlSb` | method | `// sb is a TStringBuilder object. function SetHtmlSb(sb: TChilkatBase): Boolean;` |
| `ToXml` | method | `function ToXml: string;` |
| `ToXmlSb` | method | `// sb is a TStringBuilder object. function ToXmlSb(sb: TChilkatBase): Boolean;` |
| `UndropTagType` | method | `procedure UndropTagType(const tagName: string);` |
| `UndropTextFormattingTags` | method | `procedure UndropTextFormattingTags;` |
| `Xml` | method | `function Xml: string;` |

## Properties

### HtmlToXml.DropCustomTags

`Chilkat 11.7.0 · pascal · HtmlToXml · DropCustomTags · property · read/write`

```pascal
property DropCustomTags: Boolean read GetDropCustomTags write SetDropCustomTags;
```

Controls whether tags that Chilkat does not recognize as standard HTML elements are omitted from the generated XML.

**When to use:** Set this property to `True` when custom or application-specific tags would add noise to the XML structure. Leave it `False` when those tags are meaningful to the application and should remain represented in the converted output.

### HtmlToXml.Html

`Chilkat 11.7.0 · pascal · HtmlToXml · Html · property · read/write`

```pascal
property Html: string read GetHtml write SetHtml;
```

The HTML source to be converted. Set this property to an HTML string, configure any conversion options, and then call `ToXml`, `Xml`, or `ToXmlSb`.

Assigning this property replaces the current in-memory HTML source. For file-to-file conversion, use `ConvertFile`. To load HTML from a file, `BinData`, or `StringBuilder`, use the corresponding `SetHtml*` method.

**HTML input does not need to already be valid XML.** The converter is intended for real-world HTML and repairs markup as needed to produce a well-formed XML document. Chilkat examples show malformed HTML being normalized and ordinary text represented in `<text>` elements to simplify programmatic extraction.

### HtmlToXml.Nbsp

`Chilkat 11.7.0 · pascal · HtmlToXml · Nbsp · property · read/write`

```pascal
property Nbsp: Integer read GetNbsp write SetNbsp;
```

Controls how HTML non-breaking-space entities are handled during conversion. The default value is `0`.

| Value | Behavior for `&nbsp;` |
| :--- | :--- |
| `0` | Convert to a normal space character (U+0020). |
| `1` | Convert to the numeric character reference `&#160;` (U+00A0). |
| `2` | Drop the non-breaking-space entity. |
| `3` | Leave the `&nbsp;` entity unconverted by this option. |

This setting applies specifically to the HTML entity `&nbsp;`; it does not define general whitespace normalization.

### HtmlToXml.XmlCharset

`Chilkat 11.7.0 · pascal · HtmlToXml · XmlCharset · property · read/write`

```pascal
property XmlCharset: string read GetXmlCharset write SetXmlCharset;
```

Specifies the character encoding to identify for the generated XML, such as `utf-8` or `iso-8859-1`. If this property is empty, Chilkat uses the character encoding of the HTML input. Otherwise, the converted XML uses the specified charset.

**String versus file output:** A string returned by `ToXml` or `Xml` is a string in the programming language's native string representation, while the XML declaration reflects `XmlCharset`. When writing that string to a file, use the same charset so the file bytes agree with the XML declaration. `ConvertFile` performs the file conversion directly.

## Methods

### HtmlToXml.ConvertFile

`Chilkat 11.7.0 · pascal · HtmlToXml · ConvertFile · method`

```pascal
function  ConvertFile(const inHtmlPath: string;
    const destXmlPath: string): Boolean;
```

Converts the HTML file at `inHtmlPath` to a well-formed XML file at `destXmlPath`. The output encoding is controlled by `XmlCharset`; if `XmlCharset` is empty, Chilkat uses the HTML source encoding.

Returns `True` on success and `False` on failure.

**Conversion behavior:** The input is parsed as HTML rather than XML. Chilkat can normalize malformed or incomplete HTML markup as part of producing a well-formed XML document suitable for subsequent parsing and data extraction.

Returns True for success, False for failure.

### HtmlToXml.DropTagType

`Chilkat 11.7.0 · pascal · HtmlToXml · DropTagType · method`

```pascal
procedure DropTagType(const tagName: string);
```

Marks the specified HTML tag type to be dropped from the generated XML. To drop multiple tag types, call this method once for each tag name.

The setting remains in effect for subsequent conversions performed by this `HtmlToXml` object. Use `UndropTagType` to reverse the setting for a particular tag type.

### HtmlToXml.DropTextFormattingTags

`Chilkat 11.7.0 · pascal · HtmlToXml · DropTextFormattingTags · method`

```pascal
procedure DropTextFormattingTags;
```

Configures the converter to drop common text-formatting tags from the generated XML. The affected tag names are:

`b`, `font`, `i`, `u`, `br`, `center`, `em`, `strong`, `big`, `tt`, `s`, `small`, `strike`, `sub`, and `sup`.

This is useful when the formatting markup is not relevant to later XML parsing and the application wants a simpler structural representation. Call `UndropTextFormattingTags` to keep these tags instead.

### HtmlToXml.SetHtmlBd

`Chilkat 11.7.0 · pascal · HtmlToXml · SetHtmlBd · method · since 9.5.0.77`

```pascal
// bd is a TBinData object.

function  SetHtmlBd(bd: TChilkatBase): Boolean;
```

Replaces the current HTML source with the complete contents of `bd`.

The data is copied from the supplied `BinData` object and becomes the input for a later call to `ToXml`, `Xml`, or `ToXmlSb`. Returns `True` on success and `False` on failure.

Returns True for success, False for failure.

### HtmlToXml.SetHtmlFromFile

`Chilkat 11.7.0 · pascal · HtmlToXml · SetHtmlFromFile · method`

```pascal
function  SetHtmlFromFile(const filename: string): Boolean;
```

Loads HTML from `filename` and replaces the current `Html` input with the file contents.

Returns `True` on success and `False` if the file cannot be read or the HTML input cannot be loaded. Call `ToXml`, `Xml`, or `ToXmlSb` afterward to perform the conversion.

Returns True for success, False for failure.

### HtmlToXml.SetHtmlSb

`Chilkat 11.7.0 · pascal · HtmlToXml · SetHtmlSb · method · since 9.5.0.97`

```pascal
// sb is a TStringBuilder object.

function  SetHtmlSb(sb: TChilkatBase): Boolean;
```

Replaces the current HTML source with the complete contents of `sb`.

The text is copied from the supplied `StringBuilder` and becomes the input for a later call to `ToXml`, `Xml`, or `ToXmlSb`. Returns `True` on success and `False` on failure.

Returns True for success, False for failure.

### HtmlToXml.ToXml

`Chilkat 11.7.0 · pascal · HtmlToXml · ToXml · method`

```pascal
function  ToXml: string;
```

Converts the current `Html` input to well-formed XML and returns the XML string. The generated XML uses the conversion settings currently configured on this object, including `DropCustomTags`, dropped tag types, `Nbsp`, and `XmlCharset`.

**HTML normalization:** The input is parsed as HTML, so it does not need to already be well-formed XML. Chilkat can repair incomplete or malformed markup. The generated document is wrapped in a root element, and Chilkat represents ordinary text content in `<text>` elements to make extraction with XML tools straightforward.

Returns True for success, False for failure.

### HtmlToXml.ToXmlSb

`Chilkat 11.7.0 · pascal · HtmlToXml · ToXmlSb · method · since 9.5.0.77`

```pascal
// sb is a TStringBuilder object.

function  ToXmlSb(sb: TChilkatBase): Boolean;
```

Converts the current `Html` input to well-formed XML and appends the generated XML to `sb`.

Returns `True` on success and `False` on failure. Because the result is appended, clear the destination `StringBuilder` first when replacement rather than concatenation is desired.

Returns True for success, False for failure.

### HtmlToXml.UndropTagType

`Chilkat 11.7.0 · pascal · HtmlToXml · UndropTagType · method`

```pascal
procedure UndropTagType(const tagName: string);
```

Reverses a previous `DropTagType` setting for the specified tag name so that tag type is no longer intentionally dropped from subsequent XML output.

This affects only the named tag type. Other tag types previously configured to be dropped remain unchanged.

### HtmlToXml.UndropTextFormattingTags

`Chilkat 11.7.0 · pascal · HtmlToXml · UndropTextFormattingTags · method`

```pascal
procedure UndropTextFormattingTags;
```

Configures the converter to retain the common text-formatting tags that are otherwise dropped by default:

`b`, `font`, `i`, `u`, `br`, `center`, `em`, `strong`, `big`, `tt`, `s`, `small`, `strike`, `sub`, and `sup`.

Call `DropTextFormattingTags` to return to dropping these formatting tags.

### HtmlToXml.Xml

`Chilkat 11.7.0 · pascal · HtmlToXml · Xml · method`

```pascal
function  Xml: string;
```

Equivalent to `ToXml`. Converts the current `Html` input to well-formed XML and returns the XML string using the object's current conversion settings.

This method is provided as an alternate name for `ToXml`; it does not perform a different conversion.

Returns True for success, False for failure.

## Related classes

[`BinData`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/classes/BinData.md), [`StringBuilder`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/pascal/classes/StringBuilder.md)

