XercesDOMParser parser_;

do
 {

/*create a source file */

/*During the next iteration the following code will give runtime error*/


parser_.parse(source);


xercesc::DOMDocument* xmlDoc = parser_.getDocument() ;

/*How to release the memory allocated to the DOMDocument pointer*/

/*parse the file source*/

/*delete the source file*/

/*I used the function which you suggested*/

parser_.resetDocumentPool();

}while(dwbytes==bufsize);
 /*some condition*/



On 2/27/08, Alberto Massari <[EMAIL PROTECTED]> wrote:
>
> Sree Harsha wrote:
> > Thanks Alberto,
> > I used resetDocumentPool(),
> > But I get a run time error R6025 pure virtual function call.
>
> When/where do you call resetDocumentPool? And where do you get the pure
> virtual function call? Are you attempting to access one of the DOM tree
> that you have just released?
>
> Alberto
>
> >
> > Thanks and regards
> > Sree Harsha Vardhana S.N
> >
> > On 2/27/08, *Alberto Massari* <[EMAIL PROTECTED]
> > <mailto:[EMAIL PROTECTED]>> wrote:
> >
> >     Hi Sree,
> >     you should invoke resetDocumentPool(), not reset(). As for the
> >     code you
> >     posted previously, I noticed you were not releasing the transcoded
> >     strings (you actually commented the call to XMLString::release):
> that
> >     would be a substantial leak.
> >     On the other hand, if you want to parse files so big, you should
> >     investigate switching to SAX parsing.
> >
> >     Alberto
> >
> >     Sree Harsha wrote:
> >     > Thanks for your reply, but still the memory consumption has not
> come
> >     > down. Is there any way i can reuse DOMDocument variable also like
> in
> >     > the following snippet...
> >     >
> >     > do
> >     > {
> >     >
> >     > /*create a source file */
> >     >
> >     > parser_.parse(source); //parser_ is a XercesDOMParser object
> >     >
> >     > xercesc::DOMDocument* xmlDoc = parser_.getDocument() ;
> >     >
> >     > /*How to release the memory allocated to the DOMDocument pointer*/
> >     >
> >     > /*parse the file source*/
> >     >
> >     > /*delete the source file*/
> >     >
> >     > /*I used the function which you suggested*/
> >     >
> >     > parser_.reset();
> >     >
> >     > /*still it takes up a lot of memory when parsing a big file*/
> >     >
> >     > }while(dwbytes==bufsize);
> >     > /*some condition*/
> >     >
> >     > Finally I also have one more doubt... When we use DOM, the
> >     entire file
> >     > to be parsed is brought into the memory isnt it... Now if I have
> to
> >     > parse a large file, say 380 MB or 1GB, we cant Bring the entire
> file
> >     > to the memory. So I thought it would be better to split the file
> >     into
> >     > smaller sizes and parse them bit by bit (4K long)... that is the
> >     > reason i have used create source file in the above code....
> >     > Am I in the Right path????
> >     >
> >     > On 2/26/08, *Jesse Pelton* <[EMAIL PROTECTED] <mailto:[EMAIL 
> > PROTECTED]>
> >     <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>> wrote:
> >     >
> >     >     It looks to me like you could call the various
> >     >     XercesDOMParser::reset...() and AbstractDOMParser::reset...()
> >     >     methods. Or, to be paranoid and/or lazy, you could use a new
> >     >     parser for each iteration.
> >     >
> >     >
> >
> ------------------------------------------------------------------------
> >     >     *From:* Sree Harsha [mailto:[EMAIL PROTECTED]
> >     <mailto:[EMAIL PROTECTED]>
> >     >     <mailto:[EMAIL PROTECTED]
> >     <mailto:[EMAIL PROTECTED]>>]
> >     >     *Sent:* Tuesday, February 26, 2008 5:40 AM
> >     >     *To:* [EMAIL PROTECTED]
> >     <mailto:[EMAIL PROTECTED]> <mailto:[EMAIL PROTECTED]
> >     <mailto:[EMAIL PROTECTED]>>;
> >     >     c-dev@xerces.apache.org <mailto:c-dev@xerces.apache.org>
> >     <mailto:c-dev@xerces.apache.org <mailto:c-dev@xerces.apache.org>>
> >     >     *Subject:* Please help me out with this code..Can i reuse DOM
> >     >     objects in a while loop??????
> >     >
> >     >
> >     >     /*Can i reuse the DOM objects like XercesDOMParser object in a
> >     >     do... while loop as follows.... or will it cause any memory
> >     leaks
> >     >     how to reuse them...*/
> >     >     do
> >     >     {
> >     >
> >     >     /*create a source file */
> >     >
> >     >     parser_.parse(source); //parser_ is a XercesDOMParser object
> >     >
> >     >     /*parse the file source*/
> >     >
> >     >     /*delete the source file*/
> >     >
> >     >     /*what function should i call to reuse parser_ object in the
> >     next
> >     >     iteration so that memory consumption reduces */
> >     >
> >     >     }while(dwbytes==bufsize);
> >     >     /*some condition*/
> >     >
> >     >
> >     >     --
> >     >     Regards
> >     >     Sree Harsha Vardhana S.N
> >     >     "When you want something, all the universe conspires in
> >     helping you to
> >     >     achieve it."
> >     >
> >     >     --
> >     >     Regards
> >     >     Sree Harsha Vardhana S.N
> >     >     "When you want something, all the universe conspires in
> >     helping you to
> >     >     achieve it."
> >     >
> >     >
> >     >
> >     >
> >     > --
> >     > Regards
> >     > Sree Harsha Vardhana S.N
> >     > "When you want something, all the universe conspires in helping
> >     you to
> >     > achieve it."
> >
> >
> >
> >
> ---------------------------------------------------------------------
> >     To unsubscribe, e-mail: [EMAIL PROTECTED]
> >     <mailto:[EMAIL PROTECTED]>
> >     For additional commands, e-mail: [EMAIL PROTECTED]
> >     <mailto:[EMAIL PROTECTED]>
> >
> >
> >
> >
> > --
> > Regards
> > Sree Harsha Vardhana S.N
> > "When you want something, all the universe conspires in helping you to
> > achieve it."
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


-- 
Regards
Sree Harsha Vardhana S.N
"When you want something, all the universe conspires in helping you to
achieve it."

Reply via email to