You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by Gilles FILIPPINI <Gi...@edf.fr> on 2000/06/14 17:21:51 UTC
Réf. : Creating DOM tree using in memory buffer.
Hi Tony,
It's quite simple : just subclass BinInputStream and InputSource to handle your specific input.
Below is a piece of code I use to create a DOM document from a C++ input stream.
Hope this helps.
- Gilles.
//////////////////////////////////////////////////////
#include <util/BinInputStream.hpp>
#include <sax/InputSource.hpp>
#include <dom/DOM.hpp>
#include <util/XMLUni.hpp>
#include <iostream.h>
// ************************************************************************
// IStreamBinInputStream
// ************************************************************************
class IStreamBinInputStream : public BinInputStream
{
istream & mIn;
public:
IStreamBinInputStream(istream & in);
virtual ~IStreamBinInputStream(void);
virtual unsigned int curPos(void) const;
virtual unsigned int readBytes(XMLByte * const buf,
const unsigned int max);
};
IStreamBinInputStream::IStreamBinInputStream(istream & in) :
BinInputStream(), mIn(in)
{
}
IStreamBinInputStream::~IStreamBinInputStream(void)
{
}
unsigned int IStreamBinInputStream::curPos(void) const
{
return mIn.tellg();
}
unsigned int IStreamBinInputStream::readBytes(XMLByte * const buf,
const unsigned int max)
{
mIn.read((char *)buf, max);
return mIn.gcount();
}
// ************************************************************************
// IStreamInputSource
// ************************************************************************
class IStreamInputSource : public InputSource
{
istream & mIn;
public:
IStreamInputSource(istream & in);
virtual ~IStreamInputSource(void);
virtual BinInputStream * makeStream(void) const;
};
IStreamInputSource::IStreamInputSource(istream & in) :
InputSource("istream"), mIn(in)
{
}
IStreamInputSource::~IStreamInputSource(void)
{
}
BinInputStream * IStreamInputSource::makeStream(void) const
{
return new IStreamBinInputStream(mIn);
}
// ************************************************************************
// Usage
// ************************************************************************
void MyClass::Load(istream & in)
{
DOM_Document doc;
DOMParser parser;
IStreamInputSource isis(in);
parser.parse(isis);
doc = parser.getDocument();
// ...
}
wuebben@lexis-nexis.com sur 14/06/2000 15:53:00
Pour : xerces-c-dev@xml.apache.org@hub
cc : (ccc : Gilles FILIPPINI/SEPTEN/DE/EDFGDF/FR)
Objet : Creating DOM tree using in memory buffer.
Using the DOMParser can I create a DOM tree using an in memeory buffer?
Currently I'm writing the buffer to a file and then re-reading the file
into a DOMParser.
Thanks
Tony Wuebben
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org