You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@xerces.apache.org by Gilles FILIPPINI <Gi...@edf.fr> on 2000/02/18 10:34:26 UTC
[Xerces C++] Parsing from an istream (was: [Java|1.0.1] Parsing from StringBuffer...)
Jean Georges PERRIN (jgp@4js.com) 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);
...
}