(Expat logo)

Expat is an XML parser library written in C. It is a stream-oriented parser in which an application registers handlers for things the parser might find in the XML document (like start tags). An introductory article on using Expat is available on xml.com.

This project aims to maintain Expat for both current and future users while improving the API to allow more reliable and robust access from "scripting" languages such as Python and Perl. We invite the community to participate on the mailing lists to help shape the future of Expat.

News

23 December 2005, Expat 2.0 pre-release snapshot (another one) made available.

As nothing happened here for a long time, we've posted another pre-release distribution snapshot of the code currently in CVS on libexpat.org. Please try this out and report any problems you have. We'd like to get Expat 2.0 out soon.

A late addition was the new (optional) XML_LARGE_SIZE feature to enable 64-bit integers on some API members. Please check how it builds and works for you.

28 January 2005, Expat pre-release snapshot made available.

We've posted a pre-release distribution snapshot of the code currently in CVS on libexpat.org. Please try this out and report any problems you have. We'd like to get a release out soon.

The coming release will either be 1.95.9 or 2.0, depending primarily on the response to this snapshot. If we do decide to make this 1.95.9, then we'll try to follow up with 2.0 in about a month.

23 July 2004, Expat 1.95.8 released.

The release schedule described in the previous news item didn't work out. As a compensation, we've fixed a number of the nuissance warnings generated on many platforms, and added a nice new suspend/resume feature to the parser.

  • Major new feature: suspend/resume. Handlers can now request that a parse be suspended for later resumption or aborted altogether. See "Temporarily Stopping Parsing" in the documentation for more details.
  • Some mostly minor bug fixes, but compilation should no longer generate warnings on most platforms. SF issues include: 827319, 840173, 846309, 888329, 896188, 923913, 928113, 961698, 985192.
20 October 2003, Expat 1.95.7 released.
  • Fixed enum XML_Status issue (reported on SourceForge many times), so compilers that are properly picky will be happy.
  • Introduced an XMLCALL macro to control the calling convention used by the Expat API; this macro should be used to annotate prototypes and definitions of callback implementations in code compiled with a calling convention other than the default convention for the host platform.
  • Improved ability to build without the configure-generated expat_config.h header. This is useful for applications which embed Expat rather than linking in the library.
  • Fixed a variety of bugs: see SF issues 458907, 609603, 676844, 679754, 692878, 692964, 695401, 699323, 699487, 820946.
  • Improved hash table lookups.
  • Added more regression tests and improved documentation.

Our plan is to wait for a short while and re-release this version as the long-awaited Expat 2.0 if no major problems are identified. If significant problems are found, additional iterative releases will be made as fixes are made.

15 October 2003, Upcoming release.

We're working on getting the long-delayed Expat 1.95.7 out the door. A snapshot of the current source code is available as expat-2003-10-15.tar.gz (no longer available); please give this a try on your platform and report how it works for you to the expat-discuss mailing list. Our goals for this release are portability and stability.

28 January 2003, Expat 1.95.6 released.
  • Added XML_FreeContentModel().
  • Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree().
  • Fixed a variety of bugs: see SF issues 615606, 616863, 618199, 653180, 673791.
  • Enhanced the regression test suite.
  • Man page improvements: includes SF issue 632146.

6 September 2002, Expat 1.95.5 released.
  • Added XML_UseForeignDTD() for improved SAX2 support.
  • Added XML_GetFeatureList().
  • Defined XML_Bool type and the values XML_TRUE and XML_FALSE.
  • Use an incomplete struct instead of a void* for the parser.
  • Fixed UTF-8 decoding bug that caused legal UTF-8 to be rejected.
  • Finally fixed bug where default handler would report DTD events that were already handled by another handler. Initial patch contributed by Darryl Miles.
  • Removed unnecessary DllMain() function that caused static linking into a DLL to be difficult.
  • Added VC++ projects for building static libraries.
  • Reduced line-length for all source code and headers to be no longer than 80 characters, to help with AS/400 support.
  • Reduced memory copying during parsing (SF patch #600964).
  • Fixed a variety of bugs: see SF issues 580793, 434664, 483514, 580503, 581069, 584041, 584183, 584832, 585537, 596555, 596678, 598352, 598944, 599715, 600479, 600971.

4 September 2002, Development roadmap published.
  • The initial version of the development roadmap was released for comment.

Old news archive

References & 3rd-party Wrappers

If you know of any additional articles or resources which should be linked to from this page, please send email to Fred Drake (fdrake@acm.org). We're especially interested in links to tutorial information and open source interfaces to Expat from languages other than C.

SourceForge
                 Logo