#include <ipexml.h>
Inherited by FontmapParser, and ipe::ImlParser.
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.
XmlParser::XmlParser | ( | DataSource & | source | ) |
Construct with a data source.
XmlParser::~XmlParser | ( | ) | [virtual] |
Virtual destructor, so one can destroy through pointer.
int ipe::XmlParser::parsePosition | ( | ) | const [inline] |
String XmlParser::parseToTag | ( | ) |
Parse whitespace and the name of a tag.
Like ParseToTagX, but silently skips over all tags whose name starts with "x-"
bool XmlParser::parseAttributes | ( | XmlAttributes & | attr, | |
bool | qm = false | |||
) |
Parse XML attributes.
Returns with stream just after >. Caller can check whether the tag ended with a / by checking attr.slash().
Set qm to true to allow a question mark just before the >.
Parse PCDATA.
Checks whether the data is terminated by </tag>
, and returns with stream past the >.
bool ipe::XmlParser::isTagChar | ( | int | ch | ) | [inline] |
void ipe::XmlParser::getChar | ( | ) | [inline] |
bool ipe::XmlParser::eos | ( | ) | [inline] |
void XmlParser::skipWhitespace | ( | ) |
String XmlParser::parseToTagX | ( | ) | [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.
Comments and <!TAG .. > are skipped silently.
DataSource& ipe::XmlParser::iSource [protected] |
String ipe::XmlParser::iTopElement [protected] |
int ipe::XmlParser::iCh [protected] |
int ipe::XmlParser::iPos [protected] |