Re: [expat] newbie question
"Andre Luis Monteiro" <[email protected]>
| Newsgroups | gmane.text.xml.expat.general |
|---|---|
| Message-ID | <[email protected]> |
Jeffrey you should to use XML_Bool XMLCALL XML_ParserReset(XML_Parser p, const XML_Char *encoding); Clean up the memory structures maintained by the parser so that it may be used again. After this has been called, parser is ready to start parsing a new document. All handlers are cleared from the parser, except for the unknownEncodingHandler. The parser's external state is re-initialized except for the values of ns and ns_triplets. This function may not be used on a parser created using XML_ExternalEntityParserCreate; it will return XML_FALSE in that case. Returns XML_TRUE on success. Your application is responsible for dealing with any memory associated with user data. regards André Luís PS: take a glance at your expat-2.0.0/doc/reference.html > ----- Original Message ----- > From: "Nick MacDonald" <[email protected]> > To: [email protected] > Subject: Re: [Expat-discuss] [expat] newbie question > Date: Sun, 8 Apr 2007 23:18:21 -0400 > > > Jeffrey: > > I think you need to make a new instance of the parser for each file. > What you are doing has the overall effect of concatenating the files > together one ofter the other, which would not be legal because there > can only be one main XML element (my terminology may be off here) per > file. Unfortunately I am not near a machine with my own code and not > on a machine that has (or can have) eXpat installed. But in > pseudo-code, do this: > > while (more files) > { > parser=createParser() > open(file) > while(!eof) > { > read databuff > xmlParse(databuff) > } > close(file) > finalizeParser() > } > > Good luck, > Nick > > On 4/8/07, Jeffrey Holle <[email protected]> wrote: > > I'm using expat 2.0.0 self build on Ubuntu Linux 5.10. > > > > The program that I'm writing needs to process N XML files. > > Note not nested, but in series. > > > > My first attempt initializes the expat parser and feeds the data into it > > like this (pseudo code): > > > > while(!files.eof()) > > { > > getline(files.filename); > > ifstream file(filename); > > do { > > char buffer[256]; > > file.read(buffer,256); > > XML_Parse(parser,buffer,file.gcount(),0); > > } while (file.eof()); > > XML_Parse(parser,NULL,0,1); > > } > > > > I have not shown it, but I do have an element handler enabled and it > > works as expected for the first file, but not subsequent ones. > > > > What should I be doing to end one XML file parsing action and start another? > > > > _______________________________________________ > > Expat-discuss mailing list > > [email protected] > > http://mail.libexpat.org/mailman/listinfo/expat-discuss > > > > > -- > Nick MacDonald > [email protected] > _______________________________________________ > Expat-discuss mailing list > [email protected] > http://mail.libexpat.org/mailman/listinfo/expat-discuss > abraço André Luís =