[
Lists Home |
Date Index |
Thread Index
]
On Mon, Dec 17, 2001 at 05:11:42PM -0500, John Cowan wrote:
| This is a first design for XMLIterator, a third base-level API
| which allows an application to pull content from XML.
What a great idea.
| // Processing model: Iteration starts with the
| // ELEMENT node of the document element, and on successive
| // calls to next(), proceeds through the document,
| // returning ELEMENT, ATTRIBUTE, SKIPPED_ENTITY,
| // END_ELEMENT, and PI nodes in document order
| // (except that ATTRIBUTE nodes appear just after
| // their owner ELEMENT node in arbitrary order),
| // followed by the END node.
You are proposing a hierarchical iterator (just as SAX is
a hierarchical visitor). I would keep the iterator
"flat" and go over a single list of children.
Iterator {
Node next();
}
Node {
Type type(); // Text, Element, Comment, PI
Iterator children(); // Only works for elements
String value(); // Returns value as defined by DOM.
String name();
...
}
The only "catch" with this interface, is that particular
functions may throw the NotAccessable() error when their
content has been skipped and the iterator is over a
sequential access medium. Once you get use to this
paradigm the nested iterator becomes very simple,
intutitive, and it blends in nicely with XSLT node-sets, etc.
The above interface is very similar to the "C" call
level interface for YAML and I've been using a Python
equivalent for some time with great success.
Best,
Clark
--
Clark C. Evans Axista, Inc.
http://www.axista.com 800.926.5525
XCOLLA Collaborative Project Management Software
|