Hi Daniel, > But shouldn't you use one of the wrapper functions where you specify > what input will be used ? Like htmlCreateMemoryParserCtxt() or one of the > htmlRead... function ? What is your use case ?
The use case is replacing xmlDefaultExternalEntityLoader() with a customised entity loader function. The entity loader is passed an xmlParserCtxtPtr, which allows document-specific options to be passed in using the _private field and used by the entity loader (as long as you don't use xmlReader :) So when I parse a document I want to pass in some stuff in the _private field of the context. Normally I would use xmlReadFile(), but that creates its own context and destroys it afterwards and doesn't give me a chance to put anything in _private. However, xmlCtxtReadFile() looks like just what I want, as it takes a context that I've already created with the appropriate stuff in _private. On the HTMLparser side of things I can't do this, as htmlNewParserCtxt() is static and I can't call it. I want to call htmlCtxtReadFile(), but first I need to create a context, set the _private field and pass it in. The htmlCreateFileParserCtxt() is the only way I can create a context, but I can't use it, because it calls xmlLoadExternalEntity() itself, before I have had a chance to set _private. Then when I pass the context into htmlCtxtReadFile() it will call xmlLoadExternalEntity() again! So I need a way to create a HTML parsing context that will let me set _private before trying to load any external entities. Does this seem reasonable? I can do it with the XML parsing API, so I just assume that the HTML parsing API should work the same way. Best regards, Michael -- Print XML with Prince! http://www.princexml.com _______________________________________________ xml mailing list, project page http://xmlsoft.org/ [email protected] http://mail.gnome.org/mailman/listinfo/xml
