OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] DESIGN PROPOSAL: Java XMLIterator

[ 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




 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS