# IpeXmlParser Class Reference
[Ipe Base]

Base class for XML stream parsing. More...

Inherited by IpeImlParser.

List of all members.

## Public Member Functions

- IpeXmlParser (IpeDataSource &source)
- virtual ~IpeXmlParser ()
- int ParsePosition () const

## Protected Member Functions

- IpeString ParseToTag ()
- bool ParseAttributes (IpeXmlAttributes &attr, bool qm=false)
- bool ParsePCDATA (IpeString tag, IpeString &pcdata)
- bool IsTagChar (int ch)
- void GetChar ()
- bool Eos ()
- void SkipWhitespace ()

## Protected Attributes

- IpeDataSource & iSource
- IpeString iTopElement
- int iCh
- int iPos

## Detailed Description

Base class for XML stream parsing.

This is the base class for Ipe's XML parser. It only provides some utility functions for parsing tags and PCDATA. Derived classes implement the actual parsing using recursive descent parsers---after experimenting with various schemes for XML parsing, this seems to work best for Ipe.

Tag names and attribute names must consist of ASCII letters only. Only entities for '&', '<', and '>' are recognized.

## Constructor & Destructor Documentation

IpeXmlParser::IpeXmlParser | ( | IpeDataSource & | source | ) |

| Construct with a data source.

IpeXmlParser::~IpeXmlParser | ( |  | ) | `[virtual]`

| Virtual destructor, so one can destroy through pointer.

## Member Function Documentation

IpeString IpeXmlParser::ParseToTag | ( |  | ) | `[protected]`

| Parse whitespace and the name of a tag. If the tag is a closing tag, skips > and returns with stream after that. Otherwise, returns with stream just after the tag name.

bool IpeXmlParser::ParseAttributes | ( | IpeXmlAttributes & | attr,
|  | bool | qm = false
| ) | `[protected]`

| Parse XML attributes. Returns with stream just after >. Caller can check whether the tag ended with a / by checking attr.Slash().

bool IpeXmlParser::ParsePCDATA | ( | IpeString | tag,
|  | IpeString & | pcdata
| ) | `[protected]`

| Parse PCDATA. Checks whether the data is terminated by `</tag>`, and returns with stream past the >.

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

- ipexml.h
- ipexml.cpp