On Mon, Mar 29, 2010 at 10:25:30AM -0400, Ethan Tira-Thompson wrote:
> Hi Daniel, thanks for the feedback.
> 
> > [1]     document       ::=       prolog  element  Misc*
> > ...
> >  NEVER STACK XML DOCUMENTS
> 
> This is an unfortunate design decision.  I'm not going to close and reopen a 
> network connection for each of a series of short and frequently-sent XML 
> documents just so the parser can verify the eof, it's pedantic.  The parser 
> knows the document (or at least the root node) has ended, and by default it 
> makes sense to complain if there's extra characters afterward, but there 
> should be a way to tell libxml to ignore it.  I'm not trying to claim my 
> entire stream is a valid XML document, I only claim each of the documents in 
> the stream is valid, and it would be nice to have better support for the 
> situation.
> 
> The direct workaround, to make the IO read callback duplicate the parsing 
> functionality of looking for the close tag for the root node, is error prone. 
>  libxml is already doing this, I shouldn't have to reimplement this 
> functionality myself.
> 
> If nothing else, since you already have the save-as-fragment functionality, 
> it's odd you don't also have the load-as-fragment... this situation also 
> arises if you know you have some XML embedded in something else (maybe more 
> XML, maybe not) and you just want to parse just that chunk for efficiency.

There are function to parse well balanced fragments:

  http://xmlsoft.org/html/libxml-parser.html#xmlParseBalancedChunkMemory

  or 

  http://xmlsoft.org/html/libxml-parser.html#xmlParseInNodeContext

But you have to provide the boundaries.

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
[email protected]  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to