# Expat Module

*This page explains what the Expat module is and when to use it.*

The Expat module in KDB-X integrates the [Expat XML parser library](https://libexpat.github.io/), enabling fast, incremental XML parsing directly in q code.

Unlike document-based parsers that load an entire XML tree into memory, Expat uses a stream-oriented approach – reading XML incrementally and triggering callback functions as it encounters elements such as start tags, end tags, text nodes, comments, and processing instructions. This makes it well-suited for processing large or continuous XML data streams within KDB-X environments.

## Key features

- **Event-driven parsing** – callbacks fire as XML is read, giving you fine-grained control over how data is handled.
- **High performance and low memory usage** – powered by the Expat C library for optimal speed without loading the full document into memory.
- **Multiple character encoding support** – works with UTF-8, UTF-16, and other encodings out of the box.
- **Seamless q integration** – accessible through intuitive function calls within the KDB-X ecosystem.
- **Distributed through Fusionx** – installed and updated as part of the Fusionx module.

## Use cases

Use the Expat module for:

- **Ingesting XML data feeds** to extract structured fields from financial, market, or telemetry data in XML format.
- **Streaming large XML files** where loading the full document into memory would be impractical.
- **Real-time XML processing** to parse and react to XML data as it arrives in a KDB-X pipeline.
- **Data transformation** to convert XML-formatted inputs into q tables or other KDB-X structures.

## Next steps

- Refer to the [Expat documentation](https://github.com/KxSystems/fusionx/tree/main/expat/docs) on GitHub for API references and instructions on how to install and update the module.
