The class XmlContent is a kind of replacement for Read and Show:
it provides conversions between a generic XML tree representation
and your own more specialised typeful Haskell data trees.

If you are starting with a set of Haskell datatypes, use DrIFT to
derive instances of this class for you:
http://repetae.net/john/computer/haskell/DrIFT
If you are starting with an XML DTD, use HaXml's tool DtdToHaskell
to generate both the Haskell types and the corresponding instances.

This unified class interface replaces two previous (somewhat similar)
classes: Haskell2Xml and Xml2Haskell. There was no real reason to have
separate classes depending on how you originally defined your datatypes.
However, some instances for basic types like lists will depend on which
direction you are using. See Text.XML.HaXml.XmlContent and
Text.XML.HaXml.XmlContent.Haskell.

Run an XMLParser on the contents of the given element (i.e. not on the
current monadic content sequence), checking that the contents are
exhausted, before returning the calculated value within the current
parser context.

Get the next content element, checking that it has one of the required
tags, using the given matching function.
(Skips over comments and whitespace, rejects text and refs.
Also returns position of element.)