---
product: Chilkat
product_version: 11.7.0
language: c
language_label: C
class: HtmlToXml
license: bundle
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/c_CkHtmlToXmlRef.html
---
# Chilkat HtmlToXml — C — v11.7.0

> Chilkat 11.7.0 · language=c · 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/c/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/Dispose**

```c
HCkHtmlToXml instance = CkHtmlToXml_Create();
// ...
CkHtmlToXml_Dispose(instance);
```

`HCkHtmlToXml CkHtmlToXml_Create(void);`

Creates an instance of the HCkHtmlToXml object and returns a handle ("void \*" pointer). The handle is passed in the 1st argument for the functions listed on this page.

`void CkHtmlToXml_Dispose(HCkHtmlToXml handle);`

Objects created by calling CkHtmlToXml_Create must be freed by calling this method. A memory leak occurs if a handle is not disposed by calling this function. Also, any handle returned by a Chilkat "C" function must also be freed by the application by calling the appropriate Dispose method, such as CkHtmlToXml_Dispose.

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 C.

## 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` | `void CkHtmlToXml_getDebugLogFilePath(HCkHtmlToXml cHandle, HCkString retval); void CkHtmlToXml_putDebugLogFilePath(HCkHtmlToXml cHandle, const char *newVal); const char *CkHtmlToXml_debugLogFilePath(HCkHtmlToXml cHandle);` | 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` | `void CkHtmlToXml_getLastErrorHtml(HCkHtmlToXml cHandle, HCkString retval); const char *CkHtmlToXml_lastErrorHtml(HCkHtmlToXml cHandle);` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `void CkHtmlToXml_getLastErrorText(HCkHtmlToXml cHandle, HCkString retval); const char *CkHtmlToXml_lastErrorText(HCkHtmlToXml cHandle);` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `void CkHtmlToXml_getLastErrorXml(HCkHtmlToXml cHandle, HCkString retval); const char *CkHtmlToXml_lastErrorXml(HCkHtmlToXml cHandle);` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `BOOL CkHtmlToXml_getLastMethodSuccess(HCkHtmlToXml cHandle); void CkHtmlToXml_putLastMethodSuccess(HCkHtmlToXml cHandle, BOOL newVal);` | read/write | Indicates the success or failure of the most recent method call: `TRUE` means success, `FALSE` means failure. |
| `Utf8` | `BOOL CkHtmlToXml_getUtf8(HCkHtmlToXml cHandle); void CkHtmlToXml_putUtf8(HCkHtmlToXml cHandle, BOOL newVal);` | read/write | When set to `TRUE`, all `const char *` arguments and return values are interpreted as UTF-8 strings. |
| `VerboseLogging` | `BOOL CkHtmlToXml_getVerboseLogging(HCkHtmlToXml cHandle); void CkHtmlToXml_putVerboseLogging(HCkHtmlToXml cHandle, BOOL newVal);` | read/write | If set to `TRUE`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `void CkHtmlToXml_getVersion(HCkHtmlToXml cHandle, HCkString retval); const char *CkHtmlToXml_version(HCkHtmlToXml cHandle);` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `DropCustomTags` | property, read/write | `BOOL CkHtmlToXml_getDropCustomTags(HCkHtmlToXml cHandle); void CkHtmlToXml_putDropCustomTags(HCkHtmlToXml cHandle, BOOL newVal);` |
| `Html` | property, read/write | `void CkHtmlToXml_getHtml(HCkHtmlToXml cHandle, HCkString retval); void CkHtmlToXml_putHtml(HCkHtmlToXml cHandle, const char *newVal); const char *CkHtmlToXml_html(HCkHtmlToXml cHandle);` |
| `Nbsp` | property, read/write | `int CkHtmlToXml_getNbsp(HCkHtmlToXml cHandle); void CkHtmlToXml_putNbsp(HCkHtmlToXml cHandle, int newVal);` |
| `XmlCharset` | property, read/write | `void CkHtmlToXml_getXmlCharset(HCkHtmlToXml cHandle, HCkString retval); void CkHtmlToXml_putXmlCharset(HCkHtmlToXml cHandle, const char *newVal); const char *CkHtmlToXml_xmlCharset(HCkHtmlToXml cHandle);` |
| `ConvertFile` | method | `BOOL CkHtmlToXml_ConvertFile(HCkHtmlToXml cHandle, const char *inHtmlPath, const char *destXmlPath);` |
| `DropTagType` | method | `void CkHtmlToXml_DropTagType(HCkHtmlToXml cHandle, const char *tagName);` |
| `DropTextFormattingTags` | method | `void CkHtmlToXml_DropTextFormattingTags(HCkHtmlToXml cHandle);` |
| `SetHtmlBd` | method | `BOOL CkHtmlToXml_SetHtmlBd(HCkHtmlToXml cHandle, HCkBinData bd);` |
| `SetHtmlFromFile` | method | `BOOL CkHtmlToXml_SetHtmlFromFile(HCkHtmlToXml cHandle, const char *filename);` |
| `SetHtmlSb` | method | `BOOL CkHtmlToXml_SetHtmlSb(HCkHtmlToXml cHandle, HCkStringBuilder sb);` |
| `ToXml` | method | `BOOL CkHtmlToXml_ToXml(HCkHtmlToXml cHandle, HCkString outStr); const char *CkHtmlToXml_toXml(HCkHtmlToXml cHandle);` |
| `ToXmlSb` | method | `BOOL CkHtmlToXml_ToXmlSb(HCkHtmlToXml cHandle, HCkStringBuilder sb);` |
| `UndropTagType` | method | `void CkHtmlToXml_UndropTagType(HCkHtmlToXml cHandle, const char *tagName);` |
| `UndropTextFormattingTags` | method | `void CkHtmlToXml_UndropTextFormattingTags(HCkHtmlToXml cHandle);` |
| `Xml` | method | `BOOL CkHtmlToXml_Xml(HCkHtmlToXml cHandle, HCkString outStr); const char *CkHtmlToXml_xml(HCkHtmlToXml cHandle);` |

Deprecated members are listed at the end of this file with their replacements; do not use them in new code.

## Properties

### HtmlToXml.DropCustomTags

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

```c
BOOL CkHtmlToXml_getDropCustomTags(HCkHtmlToXml cHandle);
void CkHtmlToXml_putDropCustomTags(HCkHtmlToXml cHandle, BOOL newVal);
```

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 · c · HtmlToXml · Html · property · read/write`

```c
void CkHtmlToXml_getHtml(HCkHtmlToXml cHandle, HCkString retval);
void CkHtmlToXml_putHtml(HCkHtmlToXml cHandle, const char *newVal);
const char *CkHtmlToXml_html(HCkHtmlToXml cHandle);
```

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 · c · HtmlToXml · Nbsp · property · read/write`

```c
int CkHtmlToXml_getNbsp(HCkHtmlToXml cHandle);
void CkHtmlToXml_putNbsp(HCkHtmlToXml cHandle, int newVal);
```

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 · c · HtmlToXml · XmlCharset · property · read/write`

```c
void CkHtmlToXml_getXmlCharset(HCkHtmlToXml cHandle, HCkString retval);
void CkHtmlToXml_putXmlCharset(HCkHtmlToXml cHandle, const char *newVal);
const char *CkHtmlToXml_xmlCharset(HCkHtmlToXml cHandle);
```

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 · c · HtmlToXml · ConvertFile · method`

```c
BOOL CkHtmlToXml_ConvertFile(HCkHtmlToXml cHandle, const char *inHtmlPath, const char *destXmlPath);
```

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 · c · HtmlToXml · DropTagType · method`

```c
void CkHtmlToXml_DropTagType(HCkHtmlToXml cHandle, const char *tagName);
```

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 · c · HtmlToXml · DropTextFormattingTags · method`

```c
void CkHtmlToXml_DropTextFormattingTags(HCkHtmlToXml cHandle);
```

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 · c · HtmlToXml · SetHtmlBd · method · since 9.5.0.77`

```c
BOOL CkHtmlToXml_SetHtmlBd(HCkHtmlToXml cHandle, HCkBinData bd);
```

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 · c · HtmlToXml · SetHtmlFromFile · method`

```c
BOOL CkHtmlToXml_SetHtmlFromFile(HCkHtmlToXml cHandle, const char *filename);
```

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 · c · HtmlToXml · SetHtmlSb · method · since 9.5.0.97`

```c
BOOL CkHtmlToXml_SetHtmlSb(HCkHtmlToXml cHandle, HCkStringBuilder sb);
```

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 · c · HtmlToXml · ToXml · method`

```c
BOOL CkHtmlToXml_ToXml(HCkHtmlToXml cHandle, HCkString outStr);
const char *CkHtmlToXml_toXml(HCkHtmlToXml cHandle);
```

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 · c · HtmlToXml · ToXmlSb · method · since 9.5.0.77`

```c
BOOL CkHtmlToXml_ToXmlSb(HCkHtmlToXml cHandle, HCkStringBuilder sb);
```

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 · c · HtmlToXml · UndropTagType · method`

```c
void CkHtmlToXml_UndropTagType(HCkHtmlToXml cHandle, const char *tagName);
```

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 · c · HtmlToXml · UndropTextFormattingTags · method`

```c
void CkHtmlToXml_UndropTextFormattingTags(HCkHtmlToXml cHandle);
```

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 · c · HtmlToXml · Xml · method`

```c
BOOL CkHtmlToXml_Xml(HCkHtmlToXml cHandle, HCkString outStr);
const char *CkHtmlToXml_xml(HCkHtmlToXml cHandle);
```

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.

## Deprecated members — do not use in new code

| Member | Kind | Deprecated in | Use instead |
|---|---|---|---|
| `ReadFile` | method | before 11.6.1 | — |
| `ReadFileToString` | method | before 11.6.1 | — |
| `SetHtmlBytes` | method | before 11.6.1 | — |
| `WriteFile` | method | before 11.6.1 | — |
| `WriteStringToFile` | method | before 11.6.1 | — |

## Related classes

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

