I'm able to reposition the file pointer and start reading from there on. But 
now the problem is I can read only one tag at a time. The first tag 
encountered, during read, is treated as root tag and startDocument/endDocument 
events are generated accordingly. Where as I want to continue reading. Here is 
a sample xml file:
<root>
<rec>rec1</rec>
<rec>rec2</rec>
<rec>rec3</rec>
</root>

Initially the file contains only two lines and later lines are added at a 
regular interval. My intent is to parse whatever the content of the file and 
then do not parse the same content again next time I read the file.
The approach that I'm thinking of is to read till the root-tag in xml file and 
then reposition the file-pointer and start reading from there on. But, I'm not 
sure if this can be done. Is there any way to do this?

Thanks.

Manish

-----Original Message-----
From: Galande, Manish
Sent: Friday, October 09, 2009 6:58 PM
To: '[email protected]'
Subject: RE: Reading portions of XML file.

True. I realized it after I sent the earlier reply. Till then I was thinking 
only of Xerces API's but it too implements the platform dependent code using 
these native calls.

Manish

-----Original Message-----
From: John Lilley [mailto:[email protected]]
Sent: Friday, October 09, 2009 6:33 PM
To: [email protected]
Subject: RE: Reading portions of XML file.

You have to implement that in your class.  Presumably your class will contain a 
file handle or object.  Call fseek() or lseek() as appropriate.
john

-----Original Message-----
From: Galande, Manish [mailto:[email protected]]
Sent: Friday, October 09, 2009 5:52 AM
To: [email protected]
Subject: RE: Reading portions of XML file.

Thanks John.
But how would I move to the interested offset when I already have the offset. 
I'm not aware of any lseek like call in Xerces.

Manish

-----Original Message-----
From: John Lilley [mailto:[email protected]]
Sent: Thursday, October 08, 2009 7:04 PM
To: [email protected]
Subject: RE: Reading portions of XML file.

Er, a bit cleaner snippet:

You can subclass InputSource and InputStream, then implement it however you 
like.  In this snippet, XN:: is defined as the Xerces namespace.

class MyFileInputStream : public XN::BinInputStream {
public:
        MyFileInputStream(...) {}
        virtual XMLFilePos curPos() const { return ... }
        virtual XMLSize_t readBytes(XMLByte* const toFill, const XMLSize_t 
maxToRead) {
                return ...;
        }
        // No "out-of-band" content type
        virtual const XMLCh* getContentType() const { return 0; }
private:
        ...
};
class MyFileInputSource : public XN::InputSource
{
public :
        MyFileInputSource(...) {}
        virtual XN::BinInputStream* makeStream() const {
                // Caller is owner of stream
                return new MyFileInputStream(...);
        }
private:
        ...
};

john

-----Original Message-----
From: Galande, Manish [mailto:[email protected]]
Sent: Thursday, October 08, 2009 7:12 AM
To: [email protected]
Subject: Reading portions of XML file.

Hi,

I want to read the portions of XML file depending on byte-position, using 
getSrcOffset(). Is there a way I can directly start reading/parsing from a 
pre-defined offset in the source, similar to lseek and read?

Thanks.

Manish

Reply via email to