Cytheric Ken Bannister's web home

Cytheric XML

Cytheric XML is a static library that implements an event-based XML parser for Palm OS, inspired by SAX and Expat. This package is released under the MIT license.

As an open source work, this project is ready for wider distribution. The documentation will bring you up to speed if you want to extend it. However, as an XML processor the parser is non-validating and non-conformant. PRC-Tools is required. Read on for more details, and feel free to contact me if you have any questions.

Features

  • Callbacks: StartElement, ElementCharacters, and EndElement.
  • Handles predefined entity references (lt/gt/apos/quot/amp); passes others through.
  • Handles character references in the ASCII range; passes others through.
  • Footprint: 12k in code section (including 2k imported from cytheric-util). No globals.
  • Able to parse a single document in separate chunks; well-suited to network data sources.
  • Well-documented; includes PalmUnit unit tests.
  • Implements character handling as a state machine for modularity and clarity.

Limitations

  • Accepts ASCII character encoding only.
  • Ignores comments and XML declaration.
  • Cannot read a DTD, processing instruction, or CDATA section. Results undefined.
  • Does not support namespaces.
  • Whitespace handling is minimal; not normalized.

Requirements

You need the tools below to build cytheric-xml. I do not have access to CodeWarrior; however, if you update the build process for that environment, I would be happy to incorporate those changes.

PRC-Tools version 2.2; earlier versions may work
Palm OS SDK version 5; version 4 should work as well. At runtime works on version 3.5 and higher.
Cytheric Utilities version 0.2
PilRC version 2.9 - to build the unit testing UI
PalmUnit version 0.1.2-cytheric1 - to run the unit tests
Doxygen I use version 1.2.8 - to rebuild the documentation if you change its contents.

Download

0.1 is the latest version, released 10 August 2003.

Documentation

README includes build procedure
Reference manual design, class usage, and detailed descriptions

Known Bugs

21 March 2005 - Compilation may fail with the message: "XmlParser.cpp:31: cstdlib: No such file or directory." Change 'cstdlib' to 'stdlib.h'.

Feedback

Let me know if you run into any problems, want to share your experience, or have some code/ideas to contribute. I'd love to hear from you, and I hope this helps your project!