[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: RFC: "even simpler" C++ XML parser for object hierarchies

  • From: Paul Miller <stele@f...>
  • To: xml-dev <xml-dev@i...>
  • Date: Wed, 08 Dec 1999 10:24:47 -0500

light xml parser c
> Is holding the document in memory not an option?  Because if you can hold
> it all in memory, it's simple enough to build a tree representation of the
> thing, then walk the tree with your handlers, then throw away the tree.

I started thinking about this some more. If I could build a light-weight
in-memory representation of the XML file, then I could build an "even
simpler" DOM-like interface as an option. So if you didn't want to use
the callback-based "discovery" API that I outlined previously, you can
use an alternative iterator-based API that lets you avoid the callbacks
and just iterate over elements you are interested in.

Here is my previous code, rewritten for a similar iterator-based API. As
you can see, it avoids the static callback functions and a lot of the
extra boiler-plate code, but the API is very similar.

Thoughts?

Document *App::LoadDocument(const char *path)
{	
	XML::Input file(path);
	XML::Element elem = file.GetElement("Document");
	Document *doc = new Document(elem.GetAttribute("name"));
	// now iterate over 'Layer' elements
	XML::Element::iterator it;
	for (it = elem.begin("Layer"); it != elem.end(); ++it)
	{
		Layer *layer = new Layer((*it).GetAttribute("name"));
		layer->Parse(*it);
		doc->AddLayer(layer);
	}
	AddDocument(doc);
	return doc;
}

void Layer::Parse(XML::Element &elem)
{
	// look for (required) size element
	mSize.Parse(elem.GetElement("size"));
	// look for object elements
	XML::Element::iterator it;
	for (it = elem.begin("Object"); it != elem.end(); ++it)
	{
		Object *obj = ObjectFactory::Create((*it).GetAttribute("type"));
		obj->Parse(*it);
		AddObject(obj);
	}
}

void Size::Parse(XML::Element &elem)
{
	sscanf(elem.GetData(), "%dx%d", &width, &height);
}

--
Paul Miller - stele@f...

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@i...
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To unsubscribe, mailto:majordomo@i... the following message;
unsubscribe xml-dev
To subscribe to the digests, mailto:majordomo@i... the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa@i...)



PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.