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

Re: nestable C/C++ parser

  • From: Allan Kelly 59048 <allan.kelly@r...>
  • To: xml-dev@i...
  • Date: Fri, 10 Dec 1999 13:38:21 +0000 (GMT)

c object serialisation
I find this debate quiet interesting and would like to share my experience,
maybe this should in the a "object serialisation thread" but here goes....

I've got some code (sorry, company's not mine, can't publish) which started
life a generic container, when we came to serialise the container XML was the
obvious candidate, because, as has been said before why invent a news format?

Anyway, what we've currently got I refer to as XML-like because
- I'm not confident of my DTD writing
- Each serialisation forms a message, the message is really an XML-fragment so
is missing pre-log and post-log
- root elements must have an attribute "name"

I have a plugable factory class.  Each object knows how to stream itself in and
out.  The input stream is pipped into the factory, as long as the
messages/XML-fragments are for classes which have been plugged into the factory
everything is fine, the factory produces a container which holds items from the
stream and can be accessed using operator[]

This works quiet well for passing messages between co-operating processes.

The code is actually quiet small and efficient.  Which makes me wonder why I
need to bother with expat, SAX and DOM?  The short answer is I don't because we
have a tailored solution to our problem.

Allan

>> I think your original request got lost in a side track.  If is very possible
>> to do what you want with expat.  The trick is the use of the XML_SetUserData
>> and the userdata argument.  Basically, the trick is to create a base class
>> that has methods that you want to change the behavior of (typically,
>> StartElement and EndElement).  Create derived classes for each different
>> behavior that you want.  Call XML_SetUserData to the initial handler object.
>> In your StartElement callback, cast the userdata argument up to a pointer to
>> your base class and call its startElement virtual method.  If you want to
>> change the handler, make another call to XML_SetUserData.
>
>The problem here is it requires 3 callbacks to parse a single element
>and restore the state. I'd like a cleaner solution.
>
>--
>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...)

-----------------------------------------------------------------
        Visit our Internet site at http://www.reuters.com

Any views expressed in this message are those of  the  individual
sender,  except  where  the sender specifically states them to be
the views of Reuters Ltd.

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.