Home | Modules | Class Hierarchy | Alphabetical List | Compound List | Related Pages

CXmlEl Class Reference
[XML Parser]

Inheritance diagram for CXmlEl:

CXmlEdit

Detailed Description

Simple XML Parser implementaion.

Features:
  1. Unicode support. According to the w3c Recommendations, this parser supports most Unicode character encodings. They are detected in next order:
    • Through the byte order mark (U+FEFF) or sequence "<?". UTF-8, UTF-16 (LE and BE), UTF-32 (LE and BE) charsets are detected in this way.
    • With "charset" parameter in xml declaration PI: samples:
      • <?xml charset="UTF-8"?>
      • <?xml charset="cp1251"?> Only UTF-8 and ANSI codepages are detected with this rule. All ANSI codepages are come from Colorer Unicode support classes.
    • Explicit ANSI codepage information from application, wich uses parser, with CXmlEl::parse() method.
    • In case of unavailable charset information, UTF-8 encoding is used.

  2. Entities and References parsing.
    • Simple Character References:
      • &#x0431;
      • &#32;
    • According to the w3c Predefined Entities, next DTD is used implicitly:
      • <!ENTITY lt "&#38;#60;">
      • <!ENTITY gt "&#62;">
      • <!ENTITY amp "&#38;#38;">
      • <!ENTITY apos "&#39;">
      • <!ENTITY quot "&#34;">

  3. W3C CDATA section are supported:
    • <![CDATA[ This is an <unescaped> data ]]>
Dislikes:
  1. This parser doesn't conform w3c Recommendations. It is neither well-forming nor validating parser. So, it can parse any HTML-like code.

  2. Parser treats comment nodes as simple text nodes According to this, all entities and char references in comments would be replaced.

  3. All PI nodes are treated as simple element nodes with names "?PIName" and parameters.

  4. Parser allows any non-Whitespace characters in node and parameter names. It doesn't checks character class in document. At all, any stream of bytes would be transformed into some kind of tree.


Public Methods

bool parse (const byte *src, int sz, const char *codepage=0)
 Base parse method.

virtual CXmlEl * parent ()
 Gets element's parent node.

virtual CXmlEl * next ()
 Gets element's following sibling node.

virtual CXmlEl * prev ()
 Gets element's preceding sibling node.

virtual CXmlEl * child ()
 Gets element's first child node.

ElType getType ()
 Current element's type.

const StringgetName ()
 Gets element's name.

const StringgetContent ()
 Gets content of character data nodes.

int getParamCount ()
 Gets element's number of parameters.

const StringgetParamName (int no)
 Returns name of parameter with index no.

const StringgetParamValue (int no)
 Returns value of parameter with index no.

const StringgetParamValue (const String &par)
 Returns parameter's value by name.

bool getParamValue (const String &par, int *result)
 Returns integer parameter's value.

bool getParamValue (const String &par, double *result)
 Returns double parameter's value.

CXmlEl * search (const String &tagname)
 Searches for tagname element.

CXmlEl * enumChildred (int no)
 Enumerates element's childred by no index.

virtual CXmlEl * fPrev ()
 Moving in full tree hierarchy.

virtual CXmlEl * fNext ()
 Moving in full tree hierarchy.

virtual CXmlEl * fFirst ()
 Moving in full tree hierarchy.

virtual CXmlEl * fLast ()
 Moving in full tree hierarchy.


Protected Methods

virtual bool init ()
 for derived classes

virtual CXmlEl * createNew (ElType type, CXmlEl *parent, CXmlEl *after)
 for derived classes

void destroyLevel ()
 Recursive object cleanup.

void insert (CXmlEl *El)

Protected Attributes

Stringcontent
Stringname
CXmlEl * eparent
CXmlEl * enext
CXmlEl * eprev
CXmlEl * echild
int chnum
ElType type
Hashtable< const String * > params


Member Function Documentation

bool CXmlEl::parse const byte *    src,
int    sz,
const char *    codepage = 0
 

Base parse method.

constructs XML tree from src byte stream. Object, for which this method was called, becomes root of new XML tree. All created xml elements accessible from it's next() element.

Parameters:
src Byte stream of xml source.
sz Size of input source in bytes.
codepage Default codepage to use.

CXmlEl * CXmlEl::search const String   tagname
 

Searches for tagname element.

Deprecated:
Old unused method.


Colorer-take5 Library. Copyright © 1999-2003 Cail Lomecb.
Generated at Fri Sep 12 18:54:55 2003 by doxygen 1.3-rc2.