Regina Calculation Engine
Public Member Functions | List of all members
regina::XMLElementReader Class Reference

Used to read the contents of a single XML element. More...

#include <utilities/xmlelementreader.h>

Inheritance diagram for regina::XMLElementReader:
regina::detail::XMLSimplexReader< dim > regina::detail::XMLSimplicesReader< dim > regina::detail::XMLTriangulationReaderBase< dim >::AbelianGroupPropertyReader regina::detail::XMLTriangulationReaderBase< dim >::GroupPresentationPropertyReader regina::XMLAbelianGroupReader regina::XMLAngleStructureReader regina::XMLCharsReader regina::XMLFilterReader regina::XMLGroupPresentationReader regina::XMLNormalHypersurfaceReader regina::XMLNormalSurfaceReader regina::XMLPacketReader

Public Member Functions

 XMLElementReader ()
 Creates a new element reader. More...
 
virtual ~XMLElementReader ()
 Destroys this element reader. More...
 
virtual void startElement (const std::string &tagName, const regina::xml::XMLPropertyDict &tagProps, XMLElementReader *parentReader)
 Signifies that parsing of this XML element is beginning. More...
 
virtual void initialChars (const std::string &chars)
 Signifies that the initial text belonging to this XML element has been read. More...
 
virtual XMLElementReaderstartSubElement (const std::string &subTagName, const regina::xml::XMLPropertyDict &subTagProps)
 Signifies that a subelement of this XML element is about to be parsed. More...
 
virtual void endSubElement (const std::string &subTagName, XMLElementReader *subReader)
 Signifies that parsing has finished for a subelement of this XML element. More...
 
virtual void endElement ()
 Signifies that parsing of this XML element is finished. More...
 
virtual void usingParser (regina::xml::XMLParser *parser)
 Called for the top-level element in an XML file when parsing begins. More...
 
virtual void abort (XMLElementReader *subReader)
 Signifies that XML parsing has been aborted. More...
 

Detailed Description

Used to read the contents of a single XML element.

Specifically, this class concerns itself with reading and storing the contents between a single opening tag and the corresponding closing tag. It is not concerned with reading subelements of the element in question, although the contents of subelements will be made available.

Generally a subclass of XMLElementReader will be used to receive and store information that you care about. However, if you simply wish to ignore the contents of a particular XML element (and all of its subelements), you can use class XMLElementReader itself for the element(s) you wish to ignore.

When the parser runs through a particular XML element, the routines of the corresponding XMLElementReader will be called as follows. First startElement() and initialChars() will be called. Then for each subelement encountered the following processing will take place: startSubElement() will be called to create a new child reader, the entire cycle of parsing routines will be called upon this child reader and then endSubElement() will be called upon the parent reader, after which the child reader will be destroyed. After all subelements have been processed, endElement() will be called.

If at any point parsing is aborted, routine abort() will be called upon all active readers and all active readers will be destroyed.

To parse an entire XML file using a variety of element readers (all of which may be of different subclasses of XMLElementReader), create a new regina::xml::XMLParser with an XMLCallback as its corresponding callback object.

When parsing begins on an entire XML file, an additional call is made: usingParser() will be called on the top-level element reader, so that it can gain direct access to the parser if required.

Python:\n Not present.

The documentation for this class was generated from the following file:

Copyright © 1999-2016, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).