# The XML C parser and toolkit of Gnome

## libxml2 architecture

Developer Menu

- Main Menu
- Reference Manual
- Code Examples
- XML Guidelines
- Tutorial
- The Reader Interface
- ChangeLog
- XSLT
- Python and bindings
- libxml2 architecture
- The tree output
- The SAX interface
- Memory Management
- I/O Interfaces
- The parser interfaces
- Entities or no entities
- Namespaces
- Upgrading 1.x code
- Thread safety
- DOM Principles
- A real example
- flat page, stylesheet

API Indexes

- Alphabetic
- Constructors
- Functions/Types
- Modules
- Symbols

Related links

- Mail archive
- XSLT libxslt
- DOM gdome2
- XML-DSig xmlsec
- FTP
- Windows binaries
- Solaris binaries
- MacOsX binaries
- lxml Python bindings
- Perl bindings
- C++ bindings
- PHP bindings
- Pascal bindings
- Ruby bindings
- Tcl bindings
- Bug Tracker

Libxml2 is made of multiple components; some of them are optional, and most of the block interfaces are public. The main components are:

- an Input/Output layer
- FTP and HTTP client layers (optional)
- an Internationalization layer managing the encodings support
- a URI module
- the XML parser and its basic SAX interface
- an HTML parser using the same SAX interface (optional)
- a SAX tree module to build an in-memory DOM representation
- a tree module to manipulate the DOM representation
- a validation module using the DOM representation (optional)
- an XPath module for global lookup in a DOM representation (optional)
- a debug module (optional)

Graphically this gives the following:

Daniel Veillard