Jean Georges PERRIN ([EMAIL PROTECTED]) wrote :
> 1/ Any idea about how to make that in C++ ?

I've set up a couple of C++ classes in order to be able to parse XML with 
Xerces C++ from an istream.
Is it possible to have them included into the distribution ?

- Gilles.

==========================================================
#include <util/BinInputStream.hpp>
#include <sax/InputSource.hpp>
#include <iostream>

class IStreamBinInputStream : public BinInputStream
{
        istream &       mIn;
public:
        IStreamBinInputStream(istream & in :
                BinInputStream(), mIn(in) { }
        virtual ~IStreamBinInputStream(void) { }
        virtual unsigned int curPos(void) const
                { return mIn.tellg(); }
        virtual unsigned int readBytes(XMLByte * const buf, const unsigned int 
max)
                { mIn.read(buf, max); return mIn.gcount(); }
};

class IStreamInputSource : public StdInInputSource
{
        istream &       mIn;
public:
        IStreamInputSource(istream & in) :
                InputSource("istream"), mIn(in) { }
        virtual ~IStreamInputSource(void) { }
        virtual BinInputStream * makeStream(void) const
                { return new IStreamBinInputStream(mIn); }
};
==========================================================

Usage :
{
        ...
        DOM_Parser              parser;
        IStreamInputSource      isis(myIStream);
        parser.parse(isis);
        ...
}

Reply via email to