C++ XML by Fabio Arciniegas A. (author's update
site) is a specialized guide intended to help
intermediate to advanced C++ developers understand how to
create "real world XML-aware C++ applications".
While a wealth of guides to working with XML in Java seem
to exist, C++ XML appears to be the only C++ specific
book-length guide to working with XML. But readers looking
for an introductory guide should note that it is not a basic
introduction to XML or to C++ programming. Arciniegas makes
it clear in the first chapter that the book "concentrates on
the advanced treatment of XML technologies using the C++
language, so it assumes that you have a basic familiarity
with both."
The code examples in the book itself seem designed to be
relatively self-contained and probably should be digestible
even for developers who might not consider their C++ skills
to be intermediate level. Most of the later chapters have
more code examples than the sample chapter [365Kb PDF], but instances in that chapter
should give an sense of some of the kind of simpler code
examples to be found in the book itself.
Source code for more complex example C++ applications can
be found on the CD-ROM that accompanies the book. Those
example applications include:
-
SAX Trimmer, an application for arbitrarily cutting
out parts of an XML tree (to illustrate SAX2
implementation)
-
XML QuickViewer, an editor for XML files (to
illustrate working with the DOM)
-
Graphic Novel Browser, an application for displaying
graphic novels encoded in XML (to illustrate working
with XPath/XPointer)
-
XMLableFR, a framework for working with the XMLable pattern (to illustrate
working with SAX class factories on an open-source UNIX
system)
-
BlockWorld and DOMWalkerWizard, an OpenGL 3D
rendering program and Visual Studio framework (to
illustrate creation of DOM walkers using MSXML3 and
Visual Studio)
-
CXMLRecordSet, a XML-ified partner class to the
CRecordSet Microsoft Foundation Class for binding
a database recordset to internal values in a program
(to illustrate creation of C++ XML tools for database
manipulation)
The book's manageable size (around 300 pages) and
up-to-date coverage of working with C++ implementations of
current standards (including XPointer and TREX/RELAX NG)
should make it especially appealing to developers looking to
get up to speed and up to date in a limited amount of
time.